Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Intermittent Access Violation when attempting to plot cartopy GeoAxes #1435

Closed
pzsamscore opened this issue Jan 6, 2020 · 4 comments
Closed

Comments

@pzsamscore
Copy link

Description

I started getting an Access violation when attempting to plot a custom map, but was able to replicate using one of the cartopy examples from the documentation. It seems like Cartopy isn't passing something properly through Shapely (that's the module throwing the error); something having to do with the underlying shapefiles needed, perhaps? I assume its throwing a fit because the GeoAxes instance is essentially null/missing somehow. The thing is, this issue is intermittent; I am able to plot anything and everything once I get it to run once. But, when this error gets thrown, no script that calls cartopy will work.

Code to reproduce

import matplotlib.pyplot as plt
import cartopy.crs as ccrs

nplots = 2

fig = plt.figure(figsize=(6, 6))

for i in range(0, nplots):
    central_longitude = 0 if i == 0 else 180
    ax = fig.add_subplot(nplots, 1, i+1,projection=ccrs.PlateCarree(central_longitude=central_longitude))
    ax.coastlines(resolution='110m')
    ax.gridlines()

Traceback

In [15]: runfile('C:/Users/XXXXXXXX/Downloads/projections-1.py', wdir='C:/Users/XXXXXXXX/Downloads')
Traceback (most recent call last):

  File "C:\Users\XXXXXXXX\Downloads\projections-1.py", line 10, in <module>
    ax = fig.add_subplot(nplots, 1, i+1,projection=ccrs.PlateCarree(central_longitude=central_longitude))

  File "C:\Anaconda3\lib\site-packages\matplotlib\figure.py", line 1414, in add_subplot
    a = subplot_class_factory(projection_class)(self, *args, **kwargs)

  File "C:\Anaconda3\lib\site-packages\matplotlib\axes\_subplots.py", line 69, in __init__
    self._axes_class.__init__(self, fig, self.figbox, **kwargs)

  File "C:\Anaconda3\lib\site-packages\cartopy\mpl\geoaxes.py", line 288, in __init__
    super(GeoAxes, self).__init__(*args, **kwargs)

  File "C:\Anaconda3\lib\site-packages\matplotlib\axes\_base.py", line 495, in __init__
    self.cla()

  File "C:\Anaconda3\lib\site-packages\cartopy\mpl\geoaxes.py", line 403, in cla
    self._boundary()

  File "C:\Anaconda3\lib\site-packages\cartopy\mpl\geoaxes.py", line 1260, in _boundary
    path, = cpatch.geos_to_path(self.projection.boundary)

  File "C:\Anaconda3\lib\site-packages\cartopy\mpl\patch.py", line 68, in geos_to_path
    return [Path(np.column_stack(shape.xy))]

  File "C:\Anaconda3\lib\site-packages\shapely\geometry\linestring.py", line 115, in xy
    return self.coords.xy

  File "C:\Anaconda3\lib\site-packages\shapely\geometry\base.py", line 322, in _get_coords
    if self.is_empty:

  File "C:\Anaconda3\lib\site-packages\shapely\geometry\base.py", line 643, in is_empty
    return (self._geom is None) or bool(self.impl['is_empty'](self))

  File "C:\Anaconda3\lib\site-packages\shapely\predicates.py", line 25, in __call__
    return self.fn(this._geom)

OSError: exception: access violation reading 0x0000000000000000

<Figure size 432x432 with 0 Axes>

Full environment definition

Operating system

Windows 10 Enterprise x64, build 1803

Cartopy version

0.17

conda list

C:\WINDOWS\system32>conda list
# packages in environment at C:\Anaconda3:
#
# Name                    Version                   Build  Channel
_anaconda_depends         2019.03                  py37_0
_ipyw_jlab_nb_ext_conf    0.1.0                    py37_0
alabaster                 0.7.12                   py37_0
anaconda                  custom                   py37_1
anaconda-client           1.7.2                    py37_0
anaconda-navigator        1.9.7                    py37_0
anaconda-project          0.8.4                      py_0
argh                      0.26.2                   py37_0
asn1crypto                1.2.0                    py37_0
astroid                   2.3.3                    py37_0
astropy                   3.2.3            py37he774522_0
atomicwrites              1.3.0                    py37_1
attrs                     19.3.0                     py_0
autopep8                  1.4.4                      py_0
babel                     2.7.0                      py_0
backcall                  0.1.0                    py37_0
backports                 1.0                        py_2
backports.functools_lru_cache 1.6.1                      py_0
backports.os              0.1.1                    py37_0
backports.shutil_get_terminal_size 1.0.0                    py37_2
backports.tempfile        1.0                        py_1
backports.weakref         1.0.post1                  py_1
basemap                   1.2.1                    pypi_0    pypi
bcrypt                    3.1.7            py37he774522_0
beautifulsoup4            4.8.1                    py37_0
bitarray                  1.2.0            py37he774522_0
bkcharts                  0.2                      py37_0
blas                      1.0                         mkl
bleach                    3.1.0                    py37_0
blosc                     1.16.3               h7bd577a_0
bokeh                     1.4.0                    py37_0
boto                      2.49.0                   py37_0
bottleneck                1.3.1            py37h8c2d366_0
bzip2                     1.0.8                he774522_0
ca-certificates           2019.11.27                    0
cached-property           1.5.1                    pypi_0    pypi
cartopy                   0.17.0          py37hde43876_1009    conda-forge
certifi                   2019.11.28               py37_0
cffi                      1.13.2           py37h7a1dbc1_0
cftime                    1.0.4.2                  pypi_0    pypi
chardet                   3.0.4                 py37_1003
click                     7.0                      py37_0
cloudpickle               1.2.2                      py_0
clyent                    1.2.2                    py37_1
colorama                  0.4.3                      py_0
comtypes                  1.1.7                    py37_0
conda                     4.8.0                    py37_1
conda-build               3.18.11                  py37_0
conda-env                 2.6.0                         1
conda-package-handling    1.6.0            py37h62dcd97_0
conda-verify              3.4.2                      py_1
console_shortcut          0.1.1                         3
contextlib2               0.6.0.post1                py_0
cryptography              2.8              py37h7a1dbc1_0
curl                      7.67.0               h2a8f88b_0
cx-oracle                 7.2.3                    pypi_0    pypi
cycler                    0.10.0                   py37_0
cython                    0.29.14          py37ha925a31_0
cytoolz                   0.10.1           py37he774522_0
dask                      2.9.0                      py_0
dask-core                 2.9.0                      py_0
decorator                 4.4.1                      py_0
defusedxml                0.6.0                      py_0
diff-match-patch          20181111                   py_0
distributed               2.9.0                      py_0
dnspython                 1.16.0                   pypi_0    pypi
docutils                  0.15.2                   py37_0
entrypoints               0.3                      py37_0
et_xmlfile                1.0.1                    py37_0
exchangelib               2.1.0                    pypi_0    pypi
fastcache                 1.1.0            py37he774522_0
filelock                  3.0.12                     py_0
flake8                    3.7.9                    py37_0
flask                     1.1.1                      py_0
fpdf                      1.7.2                    pypi_0    pypi
freetype                  2.9.1                ha9979f8_1
fsspec                    0.6.2                      py_0
future                    0.18.2                   py37_0
gdal                      3.0.1                    pypi_0    pypi
geos                      3.8.0                h33f27b4_0
get_terminal_size         1.0.0                h38e98db_0
gevent                    1.4.0            py37he774522_0
git                       2.23.0               h6bb4b03_0
glob2                     0.7                        py_0
greenlet                  0.4.15           py37hfa6e2cd_0
h5py                      2.9.0            py37h5e291fa_0
hdf5                      1.10.4               h7ebc959_0
heapdict                  1.0.1                      py_0
html5lib                  1.0.1                    py37_0
hypothesis                4.54.2                   py37_0
icc_rt                    2019.0.0             h0cc432a_1
icu                       58.2                 ha66f8fd_1
idna                      2.8                      py37_0
imageio                   2.6.1                    py37_0
imagesize                 1.1.0                    py37_0
importlib_metadata        1.3.0                    py37_0
intel-openmp              2019.4                      245
intervaltree              3.0.2                      py_0
ipykernel                 5.1.3            py37h39e3cac_0
ipython                   7.10.2           py37h39e3cac_0
ipython_genutils          0.2.0                    py37_0
ipywidgets                7.5.1                      py_0
isodate                   0.6.0                    pypi_0    pypi
isort                     4.3.21                   py37_0
itsdangerous              1.1.0                    py37_0
jdcal                     1.4.1                      py_0
jedi                      0.14.1                   py37_0
jinja2                    2.10.3                     py_0
joblib                    0.14.1                     py_0
jpeg                      9b                   hb83a4c4_2
json5                     0.8.5                      py_0
jsonschema                3.2.0                    py37_0
jupyter                   1.0.0                    py37_7
jupyter_client            5.3.4                    py37_0
jupyter_console           6.0.0                    py37_0
jupyter_core              4.6.1                    py37_0
jupyterlab                1.2.4              pyhf63ae98_0
jupyterlab_server         1.0.6                      py_0
keyring                   20.0.0                   py37_0
kiwisolver                1.1.0            py37ha925a31_0
krb5                      1.16.4               hc04afaa_0
lazy-object-proxy         1.4.3            py37he774522_0
libarchive                3.3.3                h0643e63_5
libcurl                   7.67.0               h2a8f88b_0
libiconv                  1.15                 h1df5818_7
liblief                   0.9.0                ha925a31_2
libpng                    1.6.37               h2a8f88b_0
libsodium                 1.0.16               h9d3ae62_0
libspatialindex           1.9.3                h33f27b4_0
libssh2                   1.8.2                h7a1dbc1_0
libtiff                   4.1.0                h56a325e_0
libxml2                   2.9.9                h464c3ec_0
libxslt                   1.1.33               h579f668_0
llvmlite                  0.30.0           py37ha925a31_0
locket                    0.2.0                    py37_1
lxml                      4.4.2            py37h1350720_0
lz4-c                     1.8.1.2              h2fa13f4_0
lzo                       2.10                 h6df0209_2
m2-bash                   4.3.042                       5    msys2
m2-coreutils              8.25                        102    msys2
m2-db                     5.3.28                        3    msys2
m2-diffutils              3.3                           4    msys2
m2-findutils              4.6.0                         2    msys2
m2-gawk                   4.1.3                         2    msys2
m2-gcc-libs               5.3.0                         4    msys2
m2-gdbm                   1.11                          4    msys2
m2-gmp                    6.1.0                         3    msys2
m2-grep                   2.22                          4    msys2
m2-libcrypt               1.3                           2    msys2
m2-libdb                  5.3.28                        3    msys2
m2-libgdbm                1.11                          4    msys2
m2-libiconv               1.14                          3    msys2
m2-libintl                0.19.7                        4    msys2
m2-libpcre                8.38                          2    msys2
m2-libreadline            6.3.008                       8    msys2
m2-mpfr                   3.1.4                         2    msys2
m2-msys2-runtime          2.5.0.17080.65c939c               3    msys2
m2-ncurses                6.0.20160220                  2    msys2
m2-patch                  2.7.5                         2    msys2
m2-perl                   5.22.1                        2    msys2
m2-sed                    4.2.2                         3    msys2
m2w64-gcc-libgfortran     5.3.0                         6
m2w64-gcc-libs            5.3.0                         7
m2w64-gcc-libs-core       5.3.0                         7
m2w64-gmp                 6.1.0                         2
m2w64-libwinpthread-git   5.0.0.4634.697f757               2
markupsafe                1.1.1            py37he774522_0
matplotlib                3.1.1            py37hc8f65d3_0
matplotlib-base           3.1.2            py37h2981e6d_1    conda-forge
mccabe                    0.6.1                    py37_1
menuinst                  1.4.16           py37he774522_0
mistune                   0.8.4            py37he774522_0
mkl                       2019.4                      245
mkl-service               2.3.0            py37hb782905_0
mkl_fft                   1.0.15           py37h14836fe_0
mkl_random                1.1.0            py37h675688f_0
mock                      3.0.5                    py37_0
more-itertools            8.0.2                      py_0
mpmath                    1.1.0                    py37_0
msgpack-python            0.6.1            py37h74a9793_1
msys2-conda-epoch         20160418                      1
multipledispatch          0.6.0                    py37_0
mysql-connector-python    8.0.17                   pypi_0    pypi
navigator-updater         0.2.1                    py37_0
nbconvert                 5.6.1                    py37_0
nbformat                  4.4.0                    py37_0
netcdf4                   1.5.3                    pypi_0    pypi
networkx                  2.4                        py_0
nltk                      3.4.5                    py37_0
nose                      1.3.7                    py37_2
notebook                  6.0.2                    py37_0
ntlm-auth                 1.4.0                    pypi_0    pypi
numba                     0.46.0           py37hf9181ef_0
numexpr                   2.7.0            py37hdce8814_0
numpy                     1.17.4           py37h4320e6b_0
numpy-base                1.17.4           py37hc3f5095_0
numpydoc                  0.9.1                      py_0
oauthlib                  3.1.0                    pypi_0    pypi
olefile                   0.46                     py37_0
openjpeg                  2.3.0                h5ec785f_1
openpyxl                  3.0.2                      py_0
openssl                   1.1.1d               he774522_3
owslib                    0.18.0                     py_0
packaging                 19.2                       py_0
pandas                    0.25.3           py37ha925a31_0
pandoc                    2.2.3.2                       0
pandocfilters             1.4.2                    py37_1
paramiko                  2.6.0                    py37_0
parso                     0.5.2                      py_0
partd                     1.1.0                      py_0
path                      13.1.0                   py37_0
path.py                   12.4.0                        0
pathlib2                  2.3.5                    py37_0
pathtools                 0.1.2                      py_1
patsy                     0.5.1                    py37_0
pep8                      1.7.1                    py37_0
pexpect                   4.7.0                    py37_0
pickleshare               0.7.5                    py37_0
pillow                    6.2.1            py37hdc69c19_0
pip                       19.3.1                   py37_0
pkginfo                   1.5.0.1                  py37_0
pluggy                    0.13.1                   py37_0
ply                       3.11                     py37_0
powershell_shortcut       0.0.1                         2
proj                      6.2.1                h9f7ef89_0
prometheus_client         0.7.1                      py_0
prompt_toolkit            2.0.9                    py37_0
psutil                    5.6.7            py37he774522_0
py                        1.8.0                    py37_0
py-lief                   0.9.0            py37ha925a31_2
pycodestyle               2.5.0                    py37_0
pycosat                   0.6.3            py37he774522_0
pycparser                 2.19                     py37_0
pycrypto                  2.6.1            py37hfa6e2cd_9
pycurl                    7.43.0.3         py37h7a1dbc1_0
pydocstyle                4.0.1                      py_0
pyepsg                    0.4.0                    py37_0
pyflakes                  2.1.1                    py37_0
pygments                  2.5.2                      py_0
pykdtree                  1.3.1            py37h8c2d366_2
pylint                    2.4.4                    py37_0
pympler                   0.7                        py_0
pynacl                    1.3.0                    pypi_0    pypi
pyodbc                    4.0.27           py37ha925a31_0
pyopenssl                 19.1.0                   py37_0
pyparsing                 2.4.5                      py_0
pypiwin32                 223                      pypi_0    pypi
pyproj                    2.4.1            py37hc6484ec_0
pyqt                      5.9.2            py37h6538335_2
pyreadline                2.1                      py37_1
pyrsistent                0.15.6           py37he774522_0
pysftp                    0.2.9                    pypi_0    pypi
pyshp                     2.1.0                      py_0
pysocks                   1.7.1                    py37_0
pytables                  3.6.1            py37h1da0976_0
pytest                    5.3.2                    py37_0
pytest-arraydiff          0.3              py37h39e3cac_0
pytest-astropy            0.7.0                      py_0
pytest-astropy-header     0.1.1                      py_0
pytest-doctestplus        0.5.0                      py_0
pytest-openfiles          0.4.0                      py_0
pytest-remotedata         0.3.2                    py37_0
python                    3.7.5                h8c8aaf0_0
python-dateutil           2.8.1                      py_0
python-jsonrpc-server     0.3.2                      py_0
python-language-server    0.31.2                   py37_0
python-libarchive-c       2.8                     py37_13
pytz                      2019.3                     py_0
pywavelets                1.1.1            py37he774522_0
pywin32                   227              py37he774522_0
pywin32-ctypes            0.2.0                    py37_0
pywinpty                  0.5.7                    py37_0
pyyaml                    5.2              py37he774522_0
pyzmq                     18.1.0           py37ha925a31_0
qdarkstyle                2.7                        py_0
qt                        5.9.7            vc14h73c81de_0
qtawesome                 0.6.0                      py_0
qtconsole                 4.6.0                      py_0
qtpy                      1.9.0                      py_0
requests                  2.22.0                   py37_1
requests-kerberos         0.12.0                   pypi_0    pypi
requests-negotiate-sspi   0.5.2                    pypi_0    pypi
requests-ntlm             1.1.0                    pypi_0    pypi
requests-oauthlib         1.3.0                    pypi_0    pypi
rope                      0.14.0                     py_0
rtree                     0.8.3                    py37_0
ruamel_yaml               0.15.87          py37he774522_0
scikit-image              0.15.0           py37ha925a31_0
scikit-learn              0.22             py37h6288b17_0
scipy                     1.3.2            py37h29ff71c_0
seaborn                   0.9.0              pyh91ea838_1
send2trash                1.5.0                    py37_0
setuptools                42.0.2                   py37_0
shapely                   1.6.4            py37hd830579_0
simplegeneric             0.8.1                    py37_2
singledispatch            3.4.0.3                  py37_0
sip                       4.19.8           py37h6538335_0
six                       1.13.0                   py37_0
snappy                    1.1.7                h777316e_3
snowballstemmer           2.0.0                      py_0
sortedcollections         1.1.2                    py37_0
sortedcontainers          2.1.0                    py37_0
soupsieve                 1.9.5                    py37_0
sphinx                    2.3.0                      py_0
sphinxcontrib             1.0                      py37_1
sphinxcontrib-applehelp   1.0.1                      py_0
sphinxcontrib-devhelp     1.0.1                      py_0
sphinxcontrib-htmlhelp    1.0.2                      py_0
sphinxcontrib-jsmath      1.0.1                      py_0
sphinxcontrib-qthelp      1.0.2                      py_0
sphinxcontrib-serializinghtml 1.1.3                      py_0
sphinxcontrib-websupport  1.1.2                      py_0
spyder                    4.0.0                    py37_0
spyder-kernels            1.8.1                    py37_0
sqlalchemy                1.3.11           py37he774522_0
sqlite                    3.30.1               he774522_0
statsmodels               0.10.1           py37h8c2d366_0
sympy                     1.5                      py37_0
tbb                       2019.4               h74a9793_0
tblib                     1.6.0                      py_0
terminado                 0.8.3                    py37_0
testpath                  0.4.4                      py_0
tk                        8.6.8                hfa6e2cd_0
toolz                     0.10.0                     py_0
tornado                   6.0.3            py37he774522_0
tqdm                      4.40.2                     py_0
traitlets                 4.3.3                    py37_0
tzlocal                   2.0.0                    pypi_0    pypi
ujson                     1.35             py37hfa6e2cd_0
unicodecsv                0.14.1                   py37_0
urllib3                   1.25.7                   py37_0
vc                        14.1                 h0510ff6_4
vs2015_runtime            14.16.27012          hf0eaf9b_1
vs2017_win-64             19.16.27032.1        hb8d98e7_1
vswhere                   2.7.1                h21ff451_0
watchdog                  0.9.0                    py37_1
wcwidth                   0.1.7                    py37_0
webencodings              0.5.1                    py37_1
werkzeug                  0.16.0                     py_0
wheel                     0.33.6                   py37_0
widgetsnbextension        3.5.1                    py37_0
win_inet_pton             1.1.0                    py37_0
win_unicode_console       0.5                      py37_0
wincertstore              0.2                      py37_0
winkerberos               0.7.0                    pypi_0    pypi
winpty                    0.4.3                         4
wrapt                     1.11.2           py37he774522_0
xlrd                      1.2.0                    py37_0
xlsxwriter                1.2.6                      py_0
xlwings                   0.16.3                   py37_0
xlwt                      1.3.0                    py37_0
xz                        5.2.4                h2fa13f4_4
yaml                      0.1.7                hc54c509_2
yapf                      0.28.0                     py_0
zeromq                    4.3.1                h33f27b4_3
zict                      1.0.0                      py_0
zipp                      0.6.0                      py_0
zlib                      1.2.11               h62dcd97_3
zstd                      1.3.7                h508b16e_0

pip list

@pzsamscore
Copy link
Author

Basically, there is something wrong with the conda-forge build currently available!

I was able to fix this access violation issue by doing the following:

  1. conda install -c conda-forge cartopy (to install and make sure all cartopy dependencies were downloaded as well)
  2. conda remove --force cartopy
  3. conda remove --force shapely
  4. download the Python 3.7 win-x64 .whl files for shapely and cartopy from Christoph Gohlke's site.
  5. pip install [shapely whl filename]
  6. pip install [cartopy whl filename]

Everything now works as expected. I can also now add a network drive path to the config dictionary in ../cartopy/init.py and it works (previously with the conda-forge install this would never work), so now I am not re-downloading shapefiles to individual user accounts each time I'm plotting naturalearth features.

I will leave this open and allow those with better knowledge close it out (with the hopes they'll know how to fix the issue with the conda-forge build).

@ajdawson
Copy link
Member

ajdawson commented Jan 8, 2020

I think the problem here was that you had cartopy installed from the conda-forge channel but shapely from defaults. I think the correct solution is to install shapely from conda-forge also since this will guarantee they are using the same version of geos (which is the underlying problem here).

@akrherz
Copy link
Contributor

akrherz commented Jan 8, 2020

  1. conda install -c conda-forge cartopy (to install and make sure all cartopy dependencies were downloaded as well)

You also want to ensure that you have channel_priority set to strict and that conda-forge is first in your channels listing. My .condarc looks like so and has worked well recently.

channel_priority: strict
channels:
  - conda-forge
  - defaults

@QuLogic
Copy link
Member

QuLogic commented Sep 24, 2021

This appears to be a conda channel mixup, not a Cartopy issue.

@QuLogic QuLogic closed this as completed Sep 24, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants