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

Bug with orthographic projection on Linux/Mac? #1142

Closed
jenfly opened this issue Oct 11, 2018 · 4 comments
Closed

Bug with orthographic projection on Linux/Mac? #1142

jenfly opened this issue Oct 11, 2018 · 4 comments

Comments

@jenfly
Copy link

jenfly commented Oct 11, 2018

Description

I think I might have stumbled onto a bug with the orthographic projection which is specific to Linux/Mac and doesn't seem to exist in Windows.

Examples

Orthographic projection with stock image, coastline, and scatter plot

Windows looks fine:

fig1_windows

With exactly the same code and same version of Cartopy (0.16.0) on Linux, there is no stock image and the scatter plot is messed up:

fig1_linux

Orthographic projection with land and ocean features only

Windows is fine:

fig2_windows

Linux also fine, so far:

fig2_linux

Orthographic projection with land and ocean features, plus scatter plot

Windows seems mostly fine (although the bottom of the map has been sliced off?):

fig3_windows

Linux now completely messed up:

fig3_linux

Code to reproduce

Jupyter notebook with output from Linux

Jupyter notebook with exactly the same code, but output was generated by running on Windows

Full environment definition

Operating system

Several of my students encountered the issue on their Mac computers. I don't have a Mac, but was able to reproduce the issue on Ubuntu 16.04 LTS.

Cartopy version

0.16.0

conda list

# packages in environment at /home/jennifer/anaconda3:
#
# Name                    Version                   Build  Channel
_ipyw_jlab_nb_ext_conf    0.1.0                    py36_0  
_nb_ext_conf              0.4.0                    py36_1  
alabaster                 0.7.11                   py36_0  
anaconda                  custom           py36hbbc8b67_0  
anaconda-client           1.7.2                    py36_0  
anaconda-navigator        1.9.2                    py36_0  
anaconda-project          0.8.2                    py36_0  
appdirs                   1.4.3            py36h28b3542_0  
asn1crypto                0.24.0                   py36_0  
astroid                   2.0.4                    py36_0  
astropy                   3.0.4            py36h14c3975_0  
atomicwrites              1.2.1                    py36_0  
attrs                     18.2.0           py36h28b3542_0  
automat                   0.7.0                    py36_0  
babel                     2.6.0                    py36_0  
backcall                  0.1.0                    py36_0  
backports                 1.0                      py36_1  
backports.shutil_get_terminal_size 1.0.0                    py36_2  
beautifulsoup4            4.6.3                    py36_0  
bitarray                  0.8.3            py36h14c3975_0  
bkcharts                  0.2                      py36_0  
blas                      1.0                         mkl  
blaze                     0.11.3                   py36_0  
bleach                    2.1.4                    py36_0  
blosc                     1.14.4               hdbcaa40_0  
bokeh                     0.13.0                   py36_0  
boto                      2.49.0                   py36_0  
bottleneck                1.2.1            py36h035aef0_1  
bzip2                     1.0.6                h14c3975_5  
ca-certificates           2018.03.07                    0  
cairo                     1.14.12              h8948797_3  
cartopy                   0.16.0           py36hfa13621_0  
certifi                   2018.8.24                py36_1  
cffi                      1.11.5           py36he75722e_1  
chardet                   3.0.4                    py36_1  
click                     7.0                      py36_0  
cloudpickle               0.5.6                    py36_0  
clyent                    1.2.2                    py36_1  
colorama                  0.3.9                    py36_0  
conda                     4.5.11                   py36_0  
conda-build               3.16.0                   py36_0  
conda-env                 2.6.0                         1  
conda-verify              3.1.1                    py36_0  
constantly                15.1.0           py36h28b3542_0  
contextlib2               0.5.5                    py36_0  
cryptography              2.3.1            py36hc365091_0  
curl                      7.61.1               hbc83047_0  
cycler                    0.10.0                   py36_0  
cython                    0.28.5           py36hf484d3e_0  
cytoolz                   0.9.0.1          py36h14c3975_1  
dask                      0.19.3                   py36_0  
dask-core                 0.19.3                   py36_0  
datashape                 0.5.4                    py36_1  
dbus                      1.13.2               h714fa37_1  
decorator                 4.3.0                    py36_0  
distributed               1.23.3                   py36_0  
docutils                  0.14                     py36_0  
entrypoints               0.2.3                    py36_2  
et_xmlfile                1.0.1                    py36_0  
expat                     2.2.6                he6710b0_0  
fastcache                 1.0.2            py36h14c3975_2  
filelock                  3.0.8                    py36_0  
flask                     1.0.2                    py36_1  
flask-cors                3.0.6                    py36_0  
fontconfig                2.13.0               h9420a91_0  
freetype                  2.9.1                h8a8886c_1  
fribidi                   1.0.5                h7b6447c_0  
future                    0.16.0                   py36_0  
geos                      3.6.2                heeff764_2  
get_terminal_size         1.0.0                haa9412d_0  
gevent                    1.3.6            py36h7b6447c_0  
glib                      2.56.2               hd408876_0  
glob2                     0.6                      py36_1  
gmp                       6.1.2                h6c8ec71_1  
gmpy2                     2.0.8            py36h10f8cd9_2  
graphite2                 1.3.12               h23475e2_2  
greenlet                  0.4.15           py36h7b6447c_0  
gst-plugins-base          1.14.0               hbbd80ab_1  
gstreamer                 1.14.0               hb453b48_1  
h5py                      2.8.0            py36h989c5e5_3  
harfbuzz                  1.8.8                hffaf4a1_0  
hdf5                      1.10.2               hba1933b_1  
heapdict                  1.0.0                    py36_2  
html5lib                  1.0.1                    py36_0  
hyperlink                 18.0.0                   py36_0  
icu                       58.2                 h9c2bf20_1  
idna                      2.7                      py36_0  
imageio                   2.4.1                    py36_0  
imagesize                 1.1.0                    py36_0  
incremental               17.5.0                   py36_0  
intel-openmp              2019.0                      118  
ipykernel                 5.0.0            py36h39e3cac_0  
ipython                   7.0.1            py36h39e3cac_0  
ipython_genutils          0.2.0                    py36_0  
ipywidgets                7.4.2                    py36_0  
isort                     4.3.4                    py36_0  
itsdangerous              0.24                     py36_1  
jbig                      2.1                  hdba287a_0  
jdcal                     1.4                      py36_0  
jedi                      0.12.1                   py36_0  
jeepney                   0.4                      py36_0  
jinja2                    2.10                     py36_0  
jpeg                      9b                   h024ee3a_2  
jsonschema                2.6.0                    py36_0  
jupyter                   1.0.0                    py36_7  
jupyter_client            5.2.3                    py36_0  
jupyter_console           5.2.0                    py36_1  
jupyter_core              4.4.0                    py36_0  
jupyterlab                0.34.12                  py36_0  
jupyterlab_launcher       0.13.1                   py36_0  
keyring                   13.2.1                   py36_0  
kiwisolver                1.0.1            py36hf484d3e_0  
lazy-object-proxy         1.3.1            py36h14c3975_2  
libarchive                3.3.3                h7d0bbab_1  
libcurl                   7.61.1               heec0ca6_0  
libedit                   3.1.20170329         h6b74fdf_2  
libffi                    3.2.1                hd88cf55_4  
libgcc-ng                 8.2.0                hdf63c60_1  
libgfortran-ng            7.3.0                hdf63c60_0  
libpng                    1.6.34               hb9fc6fc_0  
libsodium                 1.0.16               h1bed415_0  
libssh2                   1.8.0                h9cfc8f7_4  
libstdcxx-ng              8.2.0                hdf63c60_1  
libtiff                   4.0.9                he85c1e1_2  
libtool                   2.4.6                h7b6447c_5  
libuuid                   1.0.3                h1bed415_2  
libxcb                    1.13                 h1bed415_1  
libxml2                   2.9.8                h26e45fe_1  
libxslt                   1.1.32               h1312cb7_0  
llvmlite                  0.25.0           py36hd408876_0  
locket                    0.2.0                    py36_1  
lxml                      4.2.5            py36hefd8a0e_0  
lz4-c                     1.8.1.2              h14c3975_0  
lzo                       2.10                 h49e0be7_2  
markupsafe                1.0              py36h14c3975_1  
matplotlib                3.0.0            py36h5429711_0  
mccabe                    0.6.1                    py36_1  
mistune                   0.8.3            py36h14c3975_1  
mkl                       2019.0                      118  
mkl-service               1.1.2            py36h90e4bf4_5  
mkl_fft                   1.0.6            py36h7dd41cf_0  
mkl_random                1.0.1            py36h4414c95_1  
more-itertools            4.3.0                    py36_0  
mpc                       1.1.0                h10f8cd9_1  
mpfr                      4.0.1                hdf1c602_3  
mpmath                    1.0.0                    py36_2  
msgpack-python            0.5.6            py36h6bb024c_1  
multipledispatch          0.6.0                    py36_0  
navigator-updater         0.2.1                    py36_0  
nb_anacondacloud          1.4.0                    py36_0  
nb_conda                  2.2.1                    py36_0  
nb_conda_kernels          2.1.0                    py36_0  
nbconvert                 5.3.1                    py36_0  
nbformat                  4.4.0                    py36_0  
nbpresent                 3.0.2                    py36_1  
ncurses                   6.1                  hf484d3e_0  
networkx                  2.2                      py36_1  
nltk                      3.3.0                    py36_0  
nodejs                    8.12.0               he6710b0_0  
nose                      1.3.7                    py36_2  
notebook                  5.7.0                    py36_0  
numba                     0.40.0           py36h962f231_0  
numexpr                   2.6.8            py36hd89afb7_0  
numpy                     1.15.2           py36h1d66e8a_1  
numpy-base                1.15.2           py36h81de0dd_1  
numpydoc                  0.8.0                    py36_0  
odo                       0.5.1                    py36_0  
olefile                   0.46                     py36_0  
openpyxl                  2.5.8                    py36_0  
openssl                   1.0.2p               h14c3975_0  
owslib                    0.16.0                   py36_0  
packaging                 18.0                     py36_0  
pandas                    0.23.4           py36h04863e7_0  
pandoc                    2.2.3.2                       0  
pandocfilters             1.4.2                    py36_1  
pango                     1.42.4               h049681c_0  
parso                     0.3.1                    py36_0  
partd                     0.3.8                    py36_0  
patchelf                  0.9                  hf484d3e_2  
path.py                   11.1.0                   py36_0  
pathlib2                  2.3.2                    py36_0  
patsy                     0.5.0                    py36_0  
pcre                      8.42                 h439df22_0  
pep8                      1.7.1                    py36_0  
pexpect                   4.6.0                    py36_0  
pickleshare               0.7.5                    py36_0  
pillow                    5.3.0            py36h34e0f95_0  
pip                       10.0.1                   py36_0  
pixman                    0.34.0               hceecf20_3  
pkginfo                   1.4.2                    py36_1  
plotly                    3.3.0            py36h28b3542_0  
pluggy                    0.7.1            py36h28b3542_0  
ply                       3.11                     py36_0  
proj4                     5.0.1                h14c3975_0  
prometheus_client         0.3.1            py36h28b3542_0  
prompt_toolkit            2.0.5                    py36_0  
psutil                    5.4.7            py36h14c3975_0  
ptyprocess                0.6.0                    py36_0  
py                        1.6.0                    py36_0  
pyasn1                    0.4.4            py36h28b3542_0  
pyasn1-modules            0.2.2                    py36_0  
pycodestyle               2.4.0                    py36_0  
pycosat                   0.6.3            py36h14c3975_0  
pycparser                 2.19                     py36_0  
pycrypto                  2.6.1            py36h14c3975_9  
pycurl                    7.43.0.2         py36hb7f436b_0  
pyepsg                    0.3.2                    py36_0  
pyflakes                  2.0.0                    py36_0  
pygments                  2.2.0                    py36_0  
pylint                    2.1.1                    py36_0  
pyodbc                    4.0.24           py36he6710b0_0  
pyopenssl                 18.0.0                   py36_0  
pyparsing                 2.2.1                    py36_0  
pyproj                    1.9.5.1          py36h7b21b82_1  
pyqt                      5.9.2            py36h05f1152_2  
pyshp                     1.2.12                   py36_0  
pysocks                   1.6.8                    py36_0  
pytables                  3.4.4            py36ha205bf6_0  
pytest                    3.8.2                    py36_0  
pytest-arraydiff          0.2              py36h39e3cac_0  
pytest-astropy            0.4.0                    py36_0  
pytest-doctestplus        0.1.3                    py36_0  
pytest-openfiles          0.3.0                    py36_0  
pytest-remotedata         0.3.0                    py36_0  
python                    3.6.6                hc3d631a_0  
python-dateutil           2.7.3                    py36_0  
python-libarchive-c       2.8                      py36_6  
pytz                      2018.5                   py36_0  
pywavelets                1.0.1            py36hdd07704_0  
pyyaml                    3.13             py36h14c3975_0  
pyzmq                     17.1.2           py36h14c3975_0  
qt                        5.9.6                h8703b6f_2  
qtawesome                 0.5.0                    py36_0  
qtconsole                 4.4.1                    py36_0  
qtpy                      1.5.1                    py36_0  
readline                  7.0                  h7b6447c_5  
requests                  2.19.1                   py36_0  
retrying                  1.3.3                    py36_2  
rise                      5.4.1                 py36_1000    conda-forge
rope                      0.11.0                   py36_0  
ruamel_yaml               0.15.46          py36h14c3975_0  
scikit-image              0.14.0           py36hf484d3e_1  
scikit-learn              0.20.0           py36h4989274_1  
scipy                     1.1.0            py36hfa4b5c9_1  
seaborn                   0.9.0                    py36_0  
secretstorage             3.1.0                    py36_0  
send2trash                1.5.0                    py36_0  
service_identity          17.0.0           py36h28b3542_0  
setuptools                40.4.3                   py36_0  
shapely                   1.6.4            py36h7ef4460_0  
simplegeneric             0.8.1                    py36_2  
singledispatch            3.4.0.3                  py36_0  
sip                       4.19.8           py36hf484d3e_0  
six                       1.11.0                   py36_1  
snappy                    1.1.7                hbae5bb6_3  
snowballstemmer           1.2.1                    py36_0  
sortedcollections         1.0.1                    py36_0  
sortedcontainers          2.0.5                    py36_0  
sphinx                    1.8.1                    py36_0  
sphinxcontrib             1.0                      py36_1  
sphinxcontrib-websupport  1.1.0                    py36_1  
spyder                    3.3.1                    py36_1  
spyder-kernels            0.2.6                    py36_0  
sqlalchemy                1.2.12           py36h7b6447c_0  
sqlite                    3.25.2               h7b6447c_0  
statsmodels               0.9.0            py36h035aef0_0  
sympy                     1.3                      py36_0  
tblib                     1.3.2                    py36_0  
terminado                 0.8.1                    py36_1  
testpath                  0.4.2                    py36_0  
tk                        8.6.8                hbc83047_0  
toolz                     0.9.0                    py36_0  
tornado                   5.1.1            py36h7b6447c_0  
tqdm                      4.26.0           py36h28b3542_0  
traitlets                 4.3.2                    py36_0  
twisted                   18.7.0           py36h14c3975_1  
typed-ast                 1.1.0            py36h14c3975_0  
typing                    3.6.4                    py36_0  
unicodecsv                0.14.1                   py36_0  
unixodbc                  2.3.7                h14c3975_0  
urllib3                   1.23                     py36_0  
wcwidth                   0.1.7                    py36_0  
webencodings              0.5.1                    py36_1  
werkzeug                  0.14.1                   py36_0  
wheel                     0.32.0                   py36_0  
widgetsnbextension        3.4.2                    py36_0  
wrapt                     1.10.11          py36h14c3975_2  
xlrd                      1.1.0                    py36_1  
xlsxwriter                1.1.1                    py36_0  
xlwt                      1.3.0                    py36_0  
xz                        5.2.4                h14c3975_4  
yaml                      0.1.7                had09818_2  
zeromq                    4.2.5                hf484d3e_1  
zict                      0.1.3                    py36_0  
zlib                      1.2.11               ha838bed_2  
zope                      1.0                      py36_1  
zope.interface            4.5.0            py36h14c3975_0  
zstd                      1.3.3                h84994c4_0  

pip list

@QuLogic
Copy link
Member

QuLogic commented Oct 12, 2018

proj4 5.0.1 h14c3975_0

This version appears a bit buggy with the Orthographic projection, but it seems to be fixed with 5.1.0. However, Cartopy does not support Proj 5+ (#1045), so you will have to downgrade it to 4.9.3.

@jenfly
Copy link
Author

jenfly commented Oct 12, 2018

Hi @QuLogic yes, that is indeed the issue - thank you! On my Windows computer, the proj4 version is 5.1.0 which seems to work ok with Cartopy, maybe by fluke.

I see now that the Cartopy documentation says to use the conda-forge channel, and when I re-installed Cartopy on Linux from conda-forge instead of default, it uses proj4 4.9.3 dependency instead of 5+ and my issue above is resolved.

Out of curiosity, do you know why are there different Cartopy dependencies on default vs. conda-forge channels? I'm not very familiar with all the intricacies of conda channels and I usually just check for a library first on default channel, and then if it's not found, check for it on conda-forge. Is that not generally the best approach?

Thank you so much for your help!

@dopplershift
Copy link
Contributor

The difference in dependencies is an artifact of the fact that conda-forge is community-managed, so little issues like this tend to be updated more rapidly than the default/main Conda channel.

@jenfly
Copy link
Author

jenfly commented Oct 13, 2018

Ah, I see! That makes sense. Thanks very much for your insights @dopplershift!

@jenfly jenfly closed this as completed Oct 13, 2018
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

3 participants