Cartopy - a cartographic python library with matplotlib support

Overview

Cartopy

Cartopy is a Python package designed to make drawing maps for data analysis and visualisation easy.

conda-forge downloads Latest version Commits since last release # contributors Travis-CI zenodo Gitter Chat


Table of contents

Overview

Cartopy is a Python package designed to make drawing maps for data analysis and visualisation easy.

It features:

  • object oriented projection definitions
  • point, line, polygon and image transformations between projections
  • integration to expose advanced mapping in Matplotlib with a simple and intuitive interface
  • powerful vector data handling by integrating shapefile reading with Shapely capabilities

Documentation can be found at https://scitools.org.uk/cartopy/docs/latest/.

Get in touch

  • Ask usage questions on StackOverflow.
  • For less well defined questions, ideas, general discussion or announcements of related projects use the Google Group.
  • Report bugs, suggest features or view the source code on GitHub.
  • To chat with developers and other users you can use the Gitter Chat

Credits, copyright and license

Cartopy is developed collaboratively under the SciTools umberella.

A full list of codecontributors ("Cartopy contributors") can be found at https://github.com/SciTools/cartopy/graphs/contributors.

Code is just one of many ways of positively contributing to Cartopy, please see our contributing guide for more details on how you can get involved.

Cartopy is released under a LGPL license with a shared copyright model. See COPYING and COPYING.LESSER for full terms.

The Met Office has made a significant contribution to the development, maintenance and support of this library. All Met Office contributions are copyright on behalf of the British Crown.

Comments
  • Labels visibility from side spines (fix #1530)

    Labels visibility from side spines (fix #1530)

    Rationale

    It now takes into account the side label visibility in the rotation of labels.

    Implications

    Closes #1530 #1541 #1559 #1560 #1576 #1642 #1666 #1722 #1758

    opened by stefraynaud 44
  • Unable to install cartopy with pip3

    Unable to install cartopy with pip3

    Description

    I am trying to install cartopy with python 3.5.2 in a virtualenv (on Ubuntu 16.04.5) with the following command:

    pip3 install cartopy

    The pip3 is used from the virtualenv correctly. pip freeze:

    numpy==1.15.4
    pyshp==2.0.1
    Shapely==1.6.4.post2
    six==1.11.0
    

    I get the following error (warning! entire output!):

    Collecting cartopy
      Using cached https://files.pythonhosted.org/packages/e5/92/fe8838fa8158931906dfc4f16c5c1436b3dd2daf83592645b179581403ad/Cartopy-0.17.0.tar.gz
      Installing build dependencies ... done
    Collecting numpy>=1.10 (from cartopy)
      Using cached https://files.pythonhosted.org/packages/86/04/bd774106ae0ae1ada68c67efe89f1a16b2aa373cc2db15d974002a9f136d/numpy-1.15.4-cp35-cp35m-manylinux1_x86_64.whl
    Collecting shapely>=1.5.6 (from cartopy)
      Using cached https://files.pythonhosted.org/packages/a2/6c/966fa320a88fc685c956af08135855fa84a1589631256abebf73721c26ed/Shapely-1.6.4.post2-cp35-cp35m-manylinux1_x86_64.whl
    Collecting pyshp>=1.1.4 (from cartopy)
    Collecting six>=1.3.0 (from cartopy)
      Using cached https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
    Requirement already satisfied: setuptools>=0.7.2 in ./venv/lib/python3.5/site-packages (from cartopy) (40.6.2)
    Building wheels for collected packages: cartopy
      Running setup.py bdist_wheel for cartopy ... error
      Complete output from command /home/adietz/temp/venv/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-z_jd_o36/cartopy/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-1mhvgilw --python-tag cp35:
      /tmp/pip-install-z_jd_o36/cartopy/setup.py:171: UserWarning: Unable to determine GEOS version. Ensure you have 3.3.3 or later installed, or installation may fail.
        '.'.join(str(v) for v in GEOS_MIN_VERSION), ))
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-3.5
      creating build/lib.linux-x86_64-3.5/cartopy
      copying lib/cartopy/img_transform.py -> build/lib.linux-x86_64-3.5/cartopy
      copying lib/cartopy/__init__.py -> build/lib.linux-x86_64-3.5/cartopy
      copying lib/cartopy/util.py -> build/lib.linux-x86_64-3.5/cartopy
      copying lib/cartopy/vector_transform.py -> build/lib.linux-x86_64-3.5/cartopy
      copying lib/cartopy/crs.py -> build/lib.linux-x86_64-3.5/cartopy
      copying lib/cartopy/_epsg.py -> build/lib.linux-x86_64-3.5/cartopy
      copying lib/cartopy/_version.py -> build/lib.linux-x86_64-3.5/cartopy
      creating build/lib.linux-x86_64-3.5/cartopy/geodesic
      copying lib/cartopy/geodesic/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/geodesic
      creating build/lib.linux-x86_64-3.5/cartopy/feature
      copying lib/cartopy/feature/nightshade.py -> build/lib.linux-x86_64-3.5/cartopy/feature
      copying lib/cartopy/feature/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/feature
      creating build/lib.linux-x86_64-3.5/cartopy/tests
      copying lib/cartopy/tests/test_shapereader.py -> build/lib.linux-x86_64-3.5/cartopy/tests
      copying lib/cartopy/tests/test_linear_ring.py -> build/lib.linux-x86_64-3.5/cartopy/tests
      copying lib/cartopy/tests/test_crs.py -> build/lib.linux-x86_64-3.5/cartopy/tests
      copying lib/cartopy/tests/test_polygon.py -> build/lib.linux-x86_64-3.5/cartopy/tests
      copying lib/cartopy/tests/test_vector_transform.py -> build/lib.linux-x86_64-3.5/cartopy/tests
      copying lib/cartopy/tests/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/tests
      copying lib/cartopy/tests/test_geodesic.py -> build/lib.linux-x86_64-3.5/cartopy/tests
      copying lib/cartopy/tests/test_features.py -> build/lib.linux-x86_64-3.5/cartopy/tests
      copying lib/cartopy/tests/test_coastline.py -> build/lib.linux-x86_64-3.5/cartopy/tests
      copying lib/cartopy/tests/test_util.py -> build/lib.linux-x86_64-3.5/cartopy/tests
      copying lib/cartopy/tests/test_img_transform.py -> build/lib.linux-x86_64-3.5/cartopy/tests
      copying lib/cartopy/tests/test_img_tiles.py -> build/lib.linux-x86_64-3.5/cartopy/tests
      copying lib/cartopy/tests/test_img_nest.py -> build/lib.linux-x86_64-3.5/cartopy/tests
      copying lib/cartopy/tests/test_line_string.py -> build/lib.linux-x86_64-3.5/cartopy/tests
      copying lib/cartopy/tests/test_crs_transform_vectors.py -> build/lib.linux-x86_64-3.5/cartopy/tests
      copying lib/cartopy/tests/test_coding_standards.py -> build/lib.linux-x86_64-3.5/cartopy/tests
      creating build/lib.linux-x86_64-3.5/cartopy/mpl
      copying lib/cartopy/mpl/gridliner.py -> build/lib.linux-x86_64-3.5/cartopy/mpl
      copying lib/cartopy/mpl/geoaxes.py -> build/lib.linux-x86_64-3.5/cartopy/mpl
      copying lib/cartopy/mpl/slippy_image_artist.py -> build/lib.linux-x86_64-3.5/cartopy/mpl
      copying lib/cartopy/mpl/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/mpl
      copying lib/cartopy/mpl/ticker.py -> build/lib.linux-x86_64-3.5/cartopy/mpl
      copying lib/cartopy/mpl/feature_artist.py -> build/lib.linux-x86_64-3.5/cartopy/mpl
      copying lib/cartopy/mpl/patch.py -> build/lib.linux-x86_64-3.5/cartopy/mpl
      copying lib/cartopy/mpl/clip_path.py -> build/lib.linux-x86_64-3.5/cartopy/mpl
      creating build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/rotated_pole.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/geostationary.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/un_flag.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/eccentric_ellipse.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/global_map.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/tick_labels.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/wms.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/favicon.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/nightshade.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/arrows.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/tissot.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/axes_grid_basic.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/star_shaped_boundary.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/feature_creation.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/always_circular_stereo.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/streamplot.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/wmts_time.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/logo.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/aurora_forecast.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/barbs.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/reprojected_wmts.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/wmts.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/eyja_volcano.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/effects_of_the_ellipse.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/regridding_arrows.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/utm_all_zones.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/tube_stations.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/features.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/hurricane_katrina.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/waves.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      copying lib/cartopy/examples/image_tiles.py -> build/lib.linux-x86_64-3.5/cartopy/examples
      creating build/lib.linux-x86_64-3.5/cartopy/io
      copying lib/cartopy/io/img_tiles.py -> build/lib.linux-x86_64-3.5/cartopy/io
      copying lib/cartopy/io/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/io
      copying lib/cartopy/io/ogc_clients.py -> build/lib.linux-x86_64-3.5/cartopy/io
      copying lib/cartopy/io/srtm.py -> build/lib.linux-x86_64-3.5/cartopy/io
      copying lib/cartopy/io/img_nest.py -> build/lib.linux-x86_64-3.5/cartopy/io
      copying lib/cartopy/io/shapereader.py -> build/lib.linux-x86_64-3.5/cartopy/io
      creating build/lib.linux-x86_64-3.5/cartopy/sphinxext
      copying lib/cartopy/sphinxext/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/sphinxext
      copying lib/cartopy/sphinxext/summarise_package.py -> build/lib.linux-x86_64-3.5/cartopy/sphinxext
      creating build/lib.linux-x86_64-3.5/cartopy/tests/feature
      copying lib/cartopy/tests/feature/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/tests/feature
      copying lib/cartopy/tests/feature/test_nightshade.py -> build/lib.linux-x86_64-3.5/cartopy/tests/feature
      creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_images.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_patch.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_crs.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_pseudo_color.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_set_extent.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_quiver.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_plots.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_axes.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_features.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_contour.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_examples.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_ticker.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_caching.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_shapely_to_mpl.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_img_transform.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_ticks.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_gridliner.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_mpl_integration.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_web_services.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_nightshade.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      copying lib/cartopy/tests/mpl/test_feature_artist.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
      creating build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_equal_earth.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_eckert.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_geostationary.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_sinusoidal.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_rotated_geodetic.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_mollweide.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_albers_equal_area.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_robinson.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_nearside_perspective.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_interrupted_goode_homolosine.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_stereographic.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_lambert_azimuthal_equal_area.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_lambert_conformal.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_rotated_pole.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_utm.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_gnomonic.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_orthographic.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_miller.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_transverse_mercator.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_azimuthal_equidistant.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_equidistant_conic.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      copying lib/cartopy/tests/crs/test_mercator.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
      creating build/lib.linux-x86_64-3.5/cartopy/tests/io
      copying lib/cartopy/tests/io/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/tests/io
      copying lib/cartopy/tests/io/test_downloaders.py -> build/lib.linux-x86_64-3.5/cartopy/tests/io
      copying lib/cartopy/tests/io/test_ogc_clients.py -> build/lib.linux-x86_64-3.5/cartopy/tests/io
      copying lib/cartopy/tests/io/test_srtm.py -> build/lib.linux-x86_64-3.5/cartopy/tests/io
      creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images
      creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl
      creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_gridliner
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_gridliner/gridliner1.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_gridliner
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_gridliner/gridliner_labels_1.5.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_gridliner
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_gridliner/gridliner_labels.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_gridliner
      creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_examples
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_examples/global_map.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_examples
      creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_img_tiles2
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_img_tiles2/web_tiles.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_img_tiles2
      creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_features
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_features/natural_earth_custom.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_features
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_features/gshhs_coastlines.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_features
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_features/wfs.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_features
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_features/natural_earth.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_features
      creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_crs
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_crs/lambert_conformal_south.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_crs
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_crs/mercator_squashed.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_crs
      creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_nightshade
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_nightshade/nightshade_platecarree.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_nightshade
      creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_web_services
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_web_services/wmts.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_web_services
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_web_services/wms.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_web_services
      creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_img_transform
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_img_transform/regrid_image.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_img_transform
      creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_shapely_to_mpl
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_shapely_to_mpl/contour_with_interiors.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_shapely_to_mpl
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_shapely_to_mpl/poly_interiors.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_shapely_to_mpl
      creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_ticks
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_ticks/yticks_cylindrical.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_ticks
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_ticks/xticks_no_transform.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_ticks
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_ticks/yticks_no_transform.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_ticks
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_ticks/xyticks.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_ticks
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_ticks/xticks_cylindrical.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_ticks
      creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/global_contour_wrap_mpl_pre_3.0.0.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/pcolormesh_limited_area_wrap.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/quiver_plate_carree.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/barbs_regrid.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/global_pcolor_wrap.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/quiver_rotated_pole.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/simple_global.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/global_map.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/multiple_projections520.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/streamplot_mpl_2.0.0.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/barbs_1d.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/quiver_regrid.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/barbs_plate_carree.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/pcolormesh_single_column_wrap.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/natural_earth_interface.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/pcolormesh_global_wrap3.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/multiple_projections5.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/pcolormesh_mercator_wrap.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/streamplot_mpl_1.4.3.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/global_contourf_wrap.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/multiple_projections4.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/streamplot_mpl_2.1.0.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/pcolormesh_global_wrap2.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/pcolormesh_global_wrap1.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/barbs_1d_transformed.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/global_contour_wrap.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/global_scatter_wrap.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/quiver_regrid_with_extent.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/streamplot_mpl_3.0.0.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/pcolormesh_goode_wrap.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/barbs_regrid_with_extent.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
      creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_images
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_images/image_nest.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_images
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_images/web_tiles.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_images
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_images/imshow_natural_earth_ortho.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_images
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_images/imshow_regional_projected.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_images
      copying lib/cartopy/tests/mpl/baseline_images/mpl/test_images/image_merge.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_images
      creating build/lib.linux-x86_64-3.5/cartopy/data
      creating build/lib.linux-x86_64-3.5/cartopy/data/raster
      creating build/lib.linux-x86_64-3.5/cartopy/data/raster/natural_earth
      copying lib/cartopy/data/raster/natural_earth/50-natural-earth-1-downsampled.png -> build/lib.linux-x86_64-3.5/cartopy/data/raster/natural_earth
      copying lib/cartopy/data/raster/natural_earth/images.json -> build/lib.linux-x86_64-3.5/cartopy/data/raster/natural_earth
      creating build/lib.linux-x86_64-3.5/cartopy/data/raster/sample
      copying lib/cartopy/data/raster/sample/Miriam.A2012270.2050.2km.jpg -> build/lib.linux-x86_64-3.5/cartopy/data/raster/sample
      copying lib/cartopy/data/raster/sample/Miriam.A2012270.2050.2km.README.txt -> build/lib.linux-x86_64-3.5/cartopy/data/raster/sample
      creating build/lib.linux-x86_64-3.5/cartopy/data/netcdf
      copying lib/cartopy/data/netcdf/HadISST1_SST_update.nc -> build/lib.linux-x86_64-3.5/cartopy/data/netcdf
      copying lib/cartopy/data/netcdf/HadISST1_SST_update.README.txt -> build/lib.linux-x86_64-3.5/cartopy/data/netcdf
      creating build/lib.linux-x86_64-3.5/cartopy/data/shapefiles
      creating build/lib.linux-x86_64-3.5/cartopy/data/shapefiles/gshhs
      copying lib/cartopy/data/shapefiles/gshhs/README.TXT -> build/lib.linux-x86_64-3.5/cartopy/data/shapefiles/gshhs
      creating build/lib.linux-x86_64-3.5/cartopy/data/shapefiles/gshhs/c
      copying lib/cartopy/data/shapefiles/gshhs/c/GSHHS_c_L1.shp -> build/lib.linux-x86_64-3.5/cartopy/data/shapefiles/gshhs/c
      copying lib/cartopy/data/shapefiles/gshhs/c/GSHHS_c_L1.shx -> build/lib.linux-x86_64-3.5/cartopy/data/shapefiles/gshhs/c
      copying lib/cartopy/data/shapefiles/gshhs/c/GSHHS_c_L1.dbf -> build/lib.linux-x86_64-3.5/cartopy/data/shapefiles/gshhs/c
      creating build/lib.linux-x86_64-3.5/cartopy/data/shapefiles/gshhs/l
      copying lib/cartopy/data/shapefiles/gshhs/l/GSHHS_l_L2.shp -> build/lib.linux-x86_64-3.5/cartopy/data/shapefiles/gshhs/l
      copying lib/cartopy/data/shapefiles/gshhs/l/GSHHS_l_L2.dbf -> build/lib.linux-x86_64-3.5/cartopy/data/shapefiles/gshhs/l
      copying lib/cartopy/data/shapefiles/gshhs/l/GSHHS_l_L2.shx -> build/lib.linux-x86_64-3.5/cartopy/data/shapefiles/gshhs/l
      creating build/lib.linux-x86_64-3.5/cartopy/tests/lakes_shapefile
      copying lib/cartopy/tests/lakes_shapefile/ne_110m_lakes.shx -> build/lib.linux-x86_64-3.5/cartopy/tests/lakes_shapefile
      copying lib/cartopy/tests/lakes_shapefile/ne_110m_lakes.shp -> build/lib.linux-x86_64-3.5/cartopy/tests/lakes_shapefile
      copying lib/cartopy/tests/lakes_shapefile/ne_110m_lakes.dbf -> build/lib.linux-x86_64-3.5/cartopy/tests/lakes_shapefile
      copying lib/cartopy/io/srtm.npz -> build/lib.linux-x86_64-3.5/cartopy/io
      UPDATING build/lib.linux-x86_64-3.5/cartopy/_version.py
      set build/lib.linux-x86_64-3.5/cartopy/_version.py to '0.17.0'
      running build_ext
      cythoning lib/cartopy/trace.pyx to lib/cartopy/trace.cpp
      /tmp/pip-build-env-d0p2xpam/lib/python3.5/site-packages/Cython/Compiler/Main.py:367: FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2). This will change in a later release! File: /tmp/pip-install-z_jd_o36/cartopy/lib/cartopy/trace.pyx
        tree = Parsing.p_module(s, pxd, full_module_name)
      building 'cartopy.trace' extension
      creating build/temp.linux-x86_64-3.5
      creating build/temp.linux-x86_64-3.5/lib
      creating build/temp.linux-x86_64-3.5/lib/cartopy
      x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include -I./lib/cartopy -I/usr/include/python3.5m -I/home/adietz/temp/venv/include/python3.5m -c lib/cartopy/trace.cpp -o build/temp.linux-x86_64-3.5/lib/cartopy/trace.o
      cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
      lib/cartopy/trace.cpp:626:20: fatal error: geos_c.h: No such file or directory
      compilation terminated.
      error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
      
      ----------------------------------------
      Failed building wheel for cartopy
      Running setup.py clean for cartopy
    Failed to build cartopy
    Installing collected packages: numpy, shapely, pyshp, six, cartopy
      Running setup.py install for cartopy ... error
        Complete output from command /home/adietz/temp/venv/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-z_jd_o36/cartopy/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-b5abaja6/install-record.txt --single-version-externally-managed --compile --install-headers /home/adietz/temp/venv/include/site/python3.5/cartopy:
        /tmp/pip-install-z_jd_o36/cartopy/setup.py:171: UserWarning: Unable to determine GEOS version. Ensure you have 3.3.3 or later installed, or installation may fail.
          '.'.join(str(v) for v in GEOS_MIN_VERSION), ))
        running install
        running build
        running build_py
        creating build
        creating build/lib.linux-x86_64-3.5
        creating build/lib.linux-x86_64-3.5/cartopy
        copying lib/cartopy/img_transform.py -> build/lib.linux-x86_64-3.5/cartopy
        copying lib/cartopy/__init__.py -> build/lib.linux-x86_64-3.5/cartopy
        copying lib/cartopy/util.py -> build/lib.linux-x86_64-3.5/cartopy
        copying lib/cartopy/vector_transform.py -> build/lib.linux-x86_64-3.5/cartopy
        copying lib/cartopy/crs.py -> build/lib.linux-x86_64-3.5/cartopy
        copying lib/cartopy/_epsg.py -> build/lib.linux-x86_64-3.5/cartopy
        copying lib/cartopy/_version.py -> build/lib.linux-x86_64-3.5/cartopy
        creating build/lib.linux-x86_64-3.5/cartopy/geodesic
        copying lib/cartopy/geodesic/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/geodesic
        creating build/lib.linux-x86_64-3.5/cartopy/feature
        copying lib/cartopy/feature/nightshade.py -> build/lib.linux-x86_64-3.5/cartopy/feature
        copying lib/cartopy/feature/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/feature
        creating build/lib.linux-x86_64-3.5/cartopy/tests
        copying lib/cartopy/tests/test_shapereader.py -> build/lib.linux-x86_64-3.5/cartopy/tests
        copying lib/cartopy/tests/test_linear_ring.py -> build/lib.linux-x86_64-3.5/cartopy/tests
        copying lib/cartopy/tests/test_crs.py -> build/lib.linux-x86_64-3.5/cartopy/tests
        copying lib/cartopy/tests/test_polygon.py -> build/lib.linux-x86_64-3.5/cartopy/tests
        copying lib/cartopy/tests/test_vector_transform.py -> build/lib.linux-x86_64-3.5/cartopy/tests
        copying lib/cartopy/tests/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/tests
        copying lib/cartopy/tests/test_geodesic.py -> build/lib.linux-x86_64-3.5/cartopy/tests
        copying lib/cartopy/tests/test_features.py -> build/lib.linux-x86_64-3.5/cartopy/tests
        copying lib/cartopy/tests/test_coastline.py -> build/lib.linux-x86_64-3.5/cartopy/tests
        copying lib/cartopy/tests/test_util.py -> build/lib.linux-x86_64-3.5/cartopy/tests
        copying lib/cartopy/tests/test_img_transform.py -> build/lib.linux-x86_64-3.5/cartopy/tests
        copying lib/cartopy/tests/test_img_tiles.py -> build/lib.linux-x86_64-3.5/cartopy/tests
        copying lib/cartopy/tests/test_img_nest.py -> build/lib.linux-x86_64-3.5/cartopy/tests
        copying lib/cartopy/tests/test_line_string.py -> build/lib.linux-x86_64-3.5/cartopy/tests
        copying lib/cartopy/tests/test_crs_transform_vectors.py -> build/lib.linux-x86_64-3.5/cartopy/tests
        copying lib/cartopy/tests/test_coding_standards.py -> build/lib.linux-x86_64-3.5/cartopy/tests
        creating build/lib.linux-x86_64-3.5/cartopy/mpl
        copying lib/cartopy/mpl/gridliner.py -> build/lib.linux-x86_64-3.5/cartopy/mpl
        copying lib/cartopy/mpl/geoaxes.py -> build/lib.linux-x86_64-3.5/cartopy/mpl
        copying lib/cartopy/mpl/slippy_image_artist.py -> build/lib.linux-x86_64-3.5/cartopy/mpl
        copying lib/cartopy/mpl/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/mpl
        copying lib/cartopy/mpl/ticker.py -> build/lib.linux-x86_64-3.5/cartopy/mpl
        copying lib/cartopy/mpl/feature_artist.py -> build/lib.linux-x86_64-3.5/cartopy/mpl
        copying lib/cartopy/mpl/patch.py -> build/lib.linux-x86_64-3.5/cartopy/mpl
        copying lib/cartopy/mpl/clip_path.py -> build/lib.linux-x86_64-3.5/cartopy/mpl
        creating build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/rotated_pole.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/geostationary.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/un_flag.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/eccentric_ellipse.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/global_map.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/tick_labels.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/wms.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/favicon.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/nightshade.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/arrows.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/tissot.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/axes_grid_basic.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/star_shaped_boundary.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/feature_creation.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/always_circular_stereo.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/streamplot.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/wmts_time.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/logo.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/aurora_forecast.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/barbs.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/reprojected_wmts.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/wmts.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/eyja_volcano.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/effects_of_the_ellipse.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/regridding_arrows.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/utm_all_zones.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/tube_stations.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/features.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/hurricane_katrina.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/waves.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        copying lib/cartopy/examples/image_tiles.py -> build/lib.linux-x86_64-3.5/cartopy/examples
        creating build/lib.linux-x86_64-3.5/cartopy/io
        copying lib/cartopy/io/img_tiles.py -> build/lib.linux-x86_64-3.5/cartopy/io
        copying lib/cartopy/io/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/io
        copying lib/cartopy/io/ogc_clients.py -> build/lib.linux-x86_64-3.5/cartopy/io
        copying lib/cartopy/io/srtm.py -> build/lib.linux-x86_64-3.5/cartopy/io
        copying lib/cartopy/io/img_nest.py -> build/lib.linux-x86_64-3.5/cartopy/io
        copying lib/cartopy/io/shapereader.py -> build/lib.linux-x86_64-3.5/cartopy/io
        creating build/lib.linux-x86_64-3.5/cartopy/sphinxext
        copying lib/cartopy/sphinxext/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/sphinxext
        copying lib/cartopy/sphinxext/summarise_package.py -> build/lib.linux-x86_64-3.5/cartopy/sphinxext
        creating build/lib.linux-x86_64-3.5/cartopy/tests/feature
        copying lib/cartopy/tests/feature/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/tests/feature
        copying lib/cartopy/tests/feature/test_nightshade.py -> build/lib.linux-x86_64-3.5/cartopy/tests/feature
        creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_images.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_patch.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_crs.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_pseudo_color.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_set_extent.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_quiver.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_plots.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_axes.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_features.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_contour.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_examples.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_ticker.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_caching.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_shapely_to_mpl.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_img_transform.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_ticks.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_gridliner.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_mpl_integration.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_web_services.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_nightshade.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        copying lib/cartopy/tests/mpl/test_feature_artist.py -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl
        creating build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_equal_earth.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_eckert.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_geostationary.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_sinusoidal.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_rotated_geodetic.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_mollweide.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_albers_equal_area.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_robinson.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_nearside_perspective.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_interrupted_goode_homolosine.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_stereographic.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_lambert_azimuthal_equal_area.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_lambert_conformal.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_rotated_pole.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_utm.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_gnomonic.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_orthographic.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_miller.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_transverse_mercator.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_azimuthal_equidistant.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_equidistant_conic.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        copying lib/cartopy/tests/crs/test_mercator.py -> build/lib.linux-x86_64-3.5/cartopy/tests/crs
        creating build/lib.linux-x86_64-3.5/cartopy/tests/io
        copying lib/cartopy/tests/io/__init__.py -> build/lib.linux-x86_64-3.5/cartopy/tests/io
        copying lib/cartopy/tests/io/test_downloaders.py -> build/lib.linux-x86_64-3.5/cartopy/tests/io
        copying lib/cartopy/tests/io/test_ogc_clients.py -> build/lib.linux-x86_64-3.5/cartopy/tests/io
        copying lib/cartopy/tests/io/test_srtm.py -> build/lib.linux-x86_64-3.5/cartopy/tests/io
        creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images
        creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl
        creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_gridliner
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_gridliner/gridliner1.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_gridliner
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_gridliner/gridliner_labels_1.5.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_gridliner
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_gridliner/gridliner_labels.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_gridliner
        creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_examples
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_examples/global_map.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_examples
        creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_img_tiles2
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_img_tiles2/web_tiles.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_img_tiles2
        creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_features
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_features/natural_earth_custom.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_features
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_features/gshhs_coastlines.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_features
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_features/wfs.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_features
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_features/natural_earth.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_features
        creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_crs
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_crs/lambert_conformal_south.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_crs
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_crs/mercator_squashed.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_crs
        creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_nightshade
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_nightshade/nightshade_platecarree.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_nightshade
        creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_web_services
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_web_services/wmts.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_web_services
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_web_services/wms.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_web_services
        creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_img_transform
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_img_transform/regrid_image.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_img_transform
        creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_shapely_to_mpl
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_shapely_to_mpl/contour_with_interiors.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_shapely_to_mpl
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_shapely_to_mpl/poly_interiors.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_shapely_to_mpl
        creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_ticks
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_ticks/yticks_cylindrical.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_ticks
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_ticks/xticks_no_transform.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_ticks
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_ticks/yticks_no_transform.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_ticks
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_ticks/xyticks.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_ticks
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_ticks/xticks_cylindrical.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_ticks
        creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/global_contour_wrap_mpl_pre_3.0.0.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/pcolormesh_limited_area_wrap.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/quiver_plate_carree.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/barbs_regrid.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/global_pcolor_wrap.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/quiver_rotated_pole.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/simple_global.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/global_map.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/multiple_projections520.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/streamplot_mpl_2.0.0.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/barbs_1d.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/quiver_regrid.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/barbs_plate_carree.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/pcolormesh_single_column_wrap.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/natural_earth_interface.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/pcolormesh_global_wrap3.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/multiple_projections5.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/pcolormesh_mercator_wrap.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/streamplot_mpl_1.4.3.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/global_contourf_wrap.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/multiple_projections4.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/streamplot_mpl_2.1.0.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/pcolormesh_global_wrap2.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/pcolormesh_global_wrap1.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/barbs_1d_transformed.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/global_contour_wrap.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/global_scatter_wrap.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/quiver_regrid_with_extent.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/streamplot_mpl_3.0.0.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/pcolormesh_goode_wrap.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration/barbs_regrid_with_extent.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_mpl_integration
        creating build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_images
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_images/image_nest.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_images
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_images/web_tiles.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_images
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_images/imshow_natural_earth_ortho.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_images
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_images/imshow_regional_projected.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_images
        copying lib/cartopy/tests/mpl/baseline_images/mpl/test_images/image_merge.png -> build/lib.linux-x86_64-3.5/cartopy/tests/mpl/baseline_images/mpl/test_images
        creating build/lib.linux-x86_64-3.5/cartopy/data
        creating build/lib.linux-x86_64-3.5/cartopy/data/raster
        creating build/lib.linux-x86_64-3.5/cartopy/data/raster/natural_earth
        copying lib/cartopy/data/raster/natural_earth/50-natural-earth-1-downsampled.png -> build/lib.linux-x86_64-3.5/cartopy/data/raster/natural_earth
        copying lib/cartopy/data/raster/natural_earth/images.json -> build/lib.linux-x86_64-3.5/cartopy/data/raster/natural_earth
        creating build/lib.linux-x86_64-3.5/cartopy/data/raster/sample
        copying lib/cartopy/data/raster/sample/Miriam.A2012270.2050.2km.jpg -> build/lib.linux-x86_64-3.5/cartopy/data/raster/sample
        copying lib/cartopy/data/raster/sample/Miriam.A2012270.2050.2km.README.txt -> build/lib.linux-x86_64-3.5/cartopy/data/raster/sample
        creating build/lib.linux-x86_64-3.5/cartopy/data/netcdf
        copying lib/cartopy/data/netcdf/HadISST1_SST_update.nc -> build/lib.linux-x86_64-3.5/cartopy/data/netcdf
        copying lib/cartopy/data/netcdf/HadISST1_SST_update.README.txt -> build/lib.linux-x86_64-3.5/cartopy/data/netcdf
        creating build/lib.linux-x86_64-3.5/cartopy/data/shapefiles
        creating build/lib.linux-x86_64-3.5/cartopy/data/shapefiles/gshhs
        copying lib/cartopy/data/shapefiles/gshhs/README.TXT -> build/lib.linux-x86_64-3.5/cartopy/data/shapefiles/gshhs
        creating build/lib.linux-x86_64-3.5/cartopy/data/shapefiles/gshhs/c
        copying lib/cartopy/data/shapefiles/gshhs/c/GSHHS_c_L1.shp -> build/lib.linux-x86_64-3.5/cartopy/data/shapefiles/gshhs/c
        copying lib/cartopy/data/shapefiles/gshhs/c/GSHHS_c_L1.shx -> build/lib.linux-x86_64-3.5/cartopy/data/shapefiles/gshhs/c
        copying lib/cartopy/data/shapefiles/gshhs/c/GSHHS_c_L1.dbf -> build/lib.linux-x86_64-3.5/cartopy/data/shapefiles/gshhs/c
        creating build/lib.linux-x86_64-3.5/cartopy/data/shapefiles/gshhs/l
        copying lib/cartopy/data/shapefiles/gshhs/l/GSHHS_l_L2.shp -> build/lib.linux-x86_64-3.5/cartopy/data/shapefiles/gshhs/l
        copying lib/cartopy/data/shapefiles/gshhs/l/GSHHS_l_L2.dbf -> build/lib.linux-x86_64-3.5/cartopy/data/shapefiles/gshhs/l
        copying lib/cartopy/data/shapefiles/gshhs/l/GSHHS_l_L2.shx -> build/lib.linux-x86_64-3.5/cartopy/data/shapefiles/gshhs/l
        creating build/lib.linux-x86_64-3.5/cartopy/tests/lakes_shapefile
        copying lib/cartopy/tests/lakes_shapefile/ne_110m_lakes.shx -> build/lib.linux-x86_64-3.5/cartopy/tests/lakes_shapefile
        copying lib/cartopy/tests/lakes_shapefile/ne_110m_lakes.shp -> build/lib.linux-x86_64-3.5/cartopy/tests/lakes_shapefile
        copying lib/cartopy/tests/lakes_shapefile/ne_110m_lakes.dbf -> build/lib.linux-x86_64-3.5/cartopy/tests/lakes_shapefile
        copying lib/cartopy/io/srtm.npz -> build/lib.linux-x86_64-3.5/cartopy/io
        UPDATING build/lib.linux-x86_64-3.5/cartopy/_version.py
        set build/lib.linux-x86_64-3.5/cartopy/_version.py to '0.17.0'
        running build_ext
        skipping 'lib/cartopy/trace.cpp' Cython extension (up-to-date)
        building 'cartopy.trace' extension
        creating build/temp.linux-x86_64-3.5
        creating build/temp.linux-x86_64-3.5/lib
        creating build/temp.linux-x86_64-3.5/lib/cartopy
        x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include -I./lib/cartopy -I/usr/include/python3.5m -I/home/adietz/temp/venv/include/python3.5m -c lib/cartopy/trace.cpp -o build/temp.linux-x86_64-3.5/lib/cartopy/trace.o
        cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
        lib/cartopy/trace.cpp:626:20: fatal error: geos_c.h: No such file or directory
        compilation terminated.
        error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
        
        ----------------------------------------
    Command "/home/adietz/temp/venv/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-z_jd_o36/cartopy/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-b5abaja6/install-record.txt --single-version-externally-managed --compile --install-headers /home/adietz/temp/venv/include/site/python3.5/cartopy" failed with error code 1 in /tmp/pip-install-z_jd_o36/cartopy/
    
    
    Type: Question Component: installation 
    opened by alex4200 44
  • Add support for all projections to lon/lat labelling

    Add support for all projections to lon/lat labelling

    Rationale

    Longitude / latitude labelling is restricted to Mercator and PlateCarree projections. This restriction can be removed by computing the position of labels as the intersection of grid lines with the map and plot boundaries. This makes it compatible with all projections.

    In the current version, only labels that are the border of the plot are displayed, not those at the border of the map. This limitation can be overcome by better checking if a label is plotted over another object, like a label or the map.

    The code below produces the attached figures.

    import matplotlib.pyplot as plt
    import cartopy.crs as ccrs
    
    
    plain_crs = ccrs.PlateCarree()
    mercator_crs = ccrs.Mercator()
    rotated_crs = ccrs.RotatedPole(pole_longitude=120.0, pole_latitude=45.0)
    igh_crs = ccrs.InterruptedGoodeHomolosine()
    polar_crs = ccrs.SouthPolarStereo()
    uk_extent = [-10, 3, 49, 59]
    north_atlantic_extent = [-90, 0, -10, 70]
    polar_extent = [-180, 180, -90, -60]
    
    to_test = [(plain_crs, uk_extent),
               (mercator_crs, uk_extent),
               (rotated_crs, uk_extent),
               (rotated_crs, north_atlantic_extent),
               (igh_crs, north_atlantic_extent),
               (polar_crs, polar_extent)]
    
    for projection, extent in to_test:
    
        fig = plt.figure(figsize=(6, 6))
        ax = fig.add_subplot(1, 1, 1, projection=projection)
        ax.set_extent(extent, crs=plain_crs)
        ax.coastlines(resolution='50m', color='k')
        ax.gridlines(color='lightgrey', linestyle='-', draw_labels=True)
        plt.savefig(__file__[:-2] + projection.__class__.__name__.lower() + '.png')
    
    plt.show()
    

    ticks platecarree ticks mercator ticks rotatedpole ticks interruptedgoodehomolosine ticks southpolarstereo

    Implications

    Longitude and latitude labels can be plotted for all projections. Another implication is that x/y labels are no longer associated with respectively longitudes/latitudes. This must be clarified in the internal API at least.

    Note : This PR must be merged with PR #1089

    opened by stefraynaud 39
  • contourf method significantly slower than basemap

    contourf method significantly slower than basemap

    Description

    I'm migrating my codes from Basemap to Cartopy. Generally Cartopy is always faster, however I find contourf method can take me seconds. Here's my example code.

    import time
    
    import cartopy
    import matplotlib.pyplot as plt
    import numpy as np
    import scipy.ndimage as sn
    from mpl_toolkits.basemap import Basemap
    
    
    #-------------------
    #  Create data
    #-------------------
    x, y = np.mgrid[60:140:0.25, 0:45:0.25]
    r = np.random.randint(0, 255, size=(320, 180), dtype='uint8')
    r = sn.filters.gaussian_filter(r, (3, 3), mode='constant')
    
    #-------------------
    #  Cartopy
    #-------------------
    ax = plt.axes(projection=cartopy.crs.LambertConformal(
        central_longitude=100.0, central_latitude=35.0))
    ax.set_extent((60,140,0,45))
    for step in (20, 10, 5):
        tic = time.time()
        col = ax.contourf(x, y, r, transform=cartopy.crs.PlateCarree(),
            levels=np.arange(100,161,step))
        toc = time.time()
        points = sum(len(e.get_paths()) for e in col.collections)
        print('[Cartopy] Step: {} Points: {}  Time: {:.0f}ms'.format(
            step, points, (toc - tic) * 1000))
    
    
    #-------------------
    #  Basemap
    #-------------------
    _map = Basemap(projection='lcc', resolution=None,
        lon_0=100.0, lat_0=35.0, llcrnrlat=0,
        urcrnrlat=45, llcrnrlon=60, urcrnrlon=140)
    for step in (20, 10, 5):
        tic = time.time()
        col = _map.contourf(x, y, r, levels=np.arange(100,161,step))
        toc = time.time()
        points = sum(len(e.get_paths()) for e in col.collections)
        print('[Basemap] Step: {} Points: {}  Time: {:.0f}ms'.format(
            step, points, (toc - tic) * 1000))
    
    

    The result:

    [Cartopy] Step: 20 Points: 123  Time: 729ms
    [Cartopy] Step: 10 Points: 273  Time: 1433ms
    [Cartopy] Step: 5 Points: 528  Time: 2887ms
    [Basemap] Step: 20 Points: 123  Time: 118ms
    [Basemap] Step: 10 Points: 273  Time: 151ms
    [Basemap] Step: 5 Points: 528  Time: 179ms
    

    which means Cartopy can be up to 16x slower on my old laptop. After some profiling work I find the culprit is https://github.com/SciTools/cartopy/blob/master/lib/cartopy/mpl/geoaxes.py#L1505, it seems this step is to calculate new datalim and autoscale the extent. This is how far I can get to since I don't have enough time to dig in.

    • Why does this step take so much time?
    • As a quick workaround, can we just check if the extent is already set (which is the most scenario imo) before autoscaling?

    Environment

    • OS: Windows 10
    • cartopy: 0.17.0
    • basemap: 1.2.0
    • matplotlib: 3.0.2
    • shapely: 1.6.4.post1

    Thanks!

    opened by crazyapril 30
  • Updated dependency to matplotlib v1.3.1

    Updated dependency to matplotlib v1.3.1

    This PR updated the cartopy matplotlib dependency to v1.3.0. The tests no longer pass for matplotlib v1.2.0rc3, but the code still executes in exactly the same way. Cartopy v0.10.x will be the last series which guarantees this backwards compatibility, and indeed many of the shims needed within cartopy will be removed in future cartopy versions.

    I've also added an inline HTML diff viewer so that we can see any problems which are occuring on travis, but not on local machines.

    The primary difference has been as a result of the change in default for snapping of Collections (including pcolor).

    opened by pelson 29
  • 0.15 release

    0.15 release

    I'd like to cut a release to get out a few new features and fixes

    this is a note to maintainers that this is on the way, and a milestone to add to your PRs if you'd like me to try and include them in the release

    cheers mark

    opened by marqh 28
  • Added support for 2-dimensional coord in add_cyclic_point.

    Added support for 2-dimensional coord in add_cyclic_point.

    Added support for 2-dimensional coord in add_cyclic_point. Optional adding point on 2-dimensional 'latitudes' as well, called rowcoord. Routine checks that cyclic point is not yet present if coord is given.

    Rationale

    I am developing a GUI for viewing netCDF files, with similarities to ncview and Panoply, that is using cartopy as its backend: ncvue. If the tool finds 2-dimensional variables for latitudes and longitudes, it uses the 2-dimensional variables rather than any 1-dimensional variables that might be present. Like this a lot of irregular data can be visualised. For example, I was working with data from different sources that were produced on different rotated grids cuizinart. However, they provide 2-dimensional real latitudes and longitudes. So I could visualise almost all that data. There was only one problem with a Yin-Yang grid. But of course I had to add cyclic points to data, longitudes and latitudes. So I included it in the add_cyclic_point routine. I added appropriate tests.

    Implications

    There are hopefully no implications for the 1-dimensional functionalities. It should basically add new features.

    However, I changed the way the cyclic point is set for the coord variables. While before the cyclic point was the last longitude plus the difference to the longitude before, I simply add 360 to the first longitude. The first method did not work so well with the rotated grids were the 2-dimensional longitudes were computed with Proj4 and they are not equal-distant.

    There is one use case where this does not work but neither did the former method: Proj4 computed very small first longitudes of the order of 1e-5 (instead of 0). If the dimension is of type float32 one has about 6 significant digits and adding 360 to 1e-5 gives 360 and not 360.00001. So cartopy did not identify 360 as a cyclic point because it was actually smaller than (to the west of) the first latitude.

    Kind regards, Matthias

    opened by mcuntz 25
  • Sphinx gallery

    Sphinx gallery

    I was making my way through the cartopy documentation in preparation for a class I'm working on, and thought that it would be helpful if the gallery were built with Sphinx-Gallery. This lets you include text / short descriptions of examples, it's also a more stable / faster way of building galleries with sphinx.

    I figured it would be worth putting in some time to do the conversion, contained in this PR. The only main changes should be some renaming etc to clean up broken links, as well as setting up the machinery to get sphinx-gallery building. Here's an example of the gallery hosted on my fork:

    http://predictablynoisy.com/cartopy/gallery/index.html

    This PR focuses only on getting the gallery built with sphinx-gallery, but for future reference it could be extended to auto-link functions with API stub pages, or to (one day) include mybinder.org links for jupyter notebooks that are generated by sphinx-gallery. I didn't implement this stuff so that the PR doesn't become overwhelming. LMK what you think.

    Type: Documentation 
    opened by choldgraf 25
  • BUG: Broken cartopy img_transform masks

    BUG: Broken cartopy img_transform masks

    Putting this PR up here as I have not managed to finish the fixes for the bugs I found before Christmas.

    Relates to changes made in https://github.com/SciTools/cartopy/pull/370 (specifically commit https://github.com/SciTools/cartopy/commit/02e764c511b72abfc50a6273c688b9bf65ec9316)

    Two bugs: 1. Mask array operations which are unsuitable for the case when dat.mask = False TypeError: 'numpy.bool_' object does not support item assignment

    Should instead be indexing the array itself and assigning a np.ma.masked value to these indexes. i.e. dat[index] = np.ma.masked to mask these indexes.

    2. The rectangle specified is unsuitable for the general case of determining which target points fall outside the source domain.

    outside_source_domain = ((target_in_source_x < source_x_coords.min()) |
        (target_in_source_x > source_x_coords.max()) |
        (target_in_source_y < source_y_coords.min()) |
        (target_in_source_y > source_y_coords.max()))
    

    This issue reveals itself when running one of the iris tests which has data on the range [0, 360] rather than [-180, 180].

    These bugs currently don't allow iris to work with cartopy master.

    opened by cpelley 25
  • 10m land feature read incorrectly by basic reader

    10m land feature read incorrectly by basic reader

    Description

    Depending on the extent of a map, adding the land features will color the entire plot (including the ocean). Related to #803, #579, #492. This issue seems to have appeared on the 0.18 version, although I haven't tested it. The issue is present when plotting with the NearsidePerspective projection, but not PlateCarree (I haven't tried others).

    Code to reproduce

    import cartopy
    import matplotlib.pyplot as plt
    
    nearside = cartopy.crs.NearsidePerspective(central_longitude=0, central_latitude=0)
    geo = cartopy.crs.PlateCarree()
    ax = plt.axes(projection=nearside)
    extent = 7
    ax.set_extent([-extent, extent, -extent, extent], crs=geo)
    ax.add_feature(cartopy.feature.LAND)
    ax.coastlines()
    

    produces image

    setting the extent to 8 in the above code gives the expected result : image

    Full environment definition

    Operating system

    Windows 10

    Cartopy version

    0.18.0

    Type: Bug Component: Feature source 
    opened by massoncl 23
  • Writeup Ubuntu 12.04 install instructions

    Writeup Ubuntu 12.04 install instructions

    They are:

    wget http://python-distribute.org/distribute_setup.py
    sudo python distribute_setup.py
    wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
    sudo python get-pip.py
    
    # to install from git source
    sudo apt-get update
    sudo apt-get install git
    
    sudo apt-get install python-dev
    sudo pip install numpy
    
    sudo pip install cython
    sudo apt-get install libproj-dev
    
    # install geos 
    sudo apt-add-repository ppa:sharpie/for-science
    sudo apt-get update
    sudo apt-get install libgeos-dev
    
    sudo pip install shapely
    sudo apt-get install python-scipy
    sudo pip install pyshp
    
    sudo apt-get install python-imaging
    
    # for matplotlib 1.2 (no pre-build package available yet)
    sudo apt-get build-dep matplotlib
    git clone https://github.com/matplotlib/matplotlib.git
    cd matplotlib
    git checkout v1.2.0rc2
    sudo python setup.py install
    
    
    Type: Documentation 
    opened by pelson 23
  • Cartopy issue with free(): invalid size

    Cartopy issue with free(): invalid size

    Description

    I'm using Cartopy and I struggle with this issue free(): invalid size. It occurs when I set the coastline.

    Code to reproduce

    import matplotlib.pyplot as plt
    import cartopy as cart
    
    fig = plt.figure(figsize=(4,3),dpi=200)
    ax = fig.add_subplot(1,1,1,projection=cart.crs.Mercator())
    ax.add_feature(cart.feature.COASTLINE)
    

    Traceback

    Backend MacOSX is interactive backend. Turning interactive mode on.
    free(): invalid size
    
    Process finished with exit code 134 (interrupted by signal 6: SIGABRT)
    
    Full environment definition

    Operating system

    Ubuntu 20.04.4 LTS

    Cartopy version

    0.20.2

    conda list

    pip list

    aiohttp                3.8.3               
    aiosignal              1.2.0               
    apturl                 0.5.2               
    asn1ate                0.6.0               
    async-timeout          4.0.2               
    attrs                  22.1.0              
    bcrypt                 3.1.7               
    blinker                1.4                 
    Brlapi                 0.7.0               
    Cartopy                0.20.2              
    certifi                2019.11.28          
    chardet                3.0.4               
    charset-normalizer     2.1.1               
    click                  8.1.3               
    colorama               0.4.3               
    command-not-found      0.3                 
    contourpy              1.0.6               
    cryptography           2.8                 
    cupshelpers            1.0                 
    cycler                 0.11.0              
    datasets               2.5.2               
    dbus-python            1.2.16              
    defer                  1.0.6               
    dill                   0.3.5.1             
    distro                 1.4.0               
    distro-info            0.23ubuntu1         
    duplicity              0.8.12.0            
    entrypoints            0.3                 
    fasteners              0.14.1              
    filelock               3.8.0               
    Flask                  2.2.2               
    fonttools              4.38.0              
    frozenlist             1.3.1               
    fsspec                 2022.8.2            
    future                 0.18.2              
    geos                   0.2.3               
    httplib2               0.14.0              
    huggingface-hub        0.10.0              
    idna                   2.8                 
    importlib-metadata     6.0.0               
    itsdangerous           2.1.2               
    Jinja2                 3.1.2               
    jsonschema             3.2.0               
    keyring                18.0.1              
    kiwisolver             1.4.4               
    language-selector      0.1                 
    launchpadlib           1.10.13             
    lazr.restfulclient     0.14.2              
    lazr.uri               1.0.3               
    lockfile               0.12.2              
    louis                  3.12.0              
    lxml                   4.9.2               
    macaroonbakery         1.3.1               
    Mako                   1.1.0               
    manifest-tool          2.4.1               
    MarkupSafe             2.1.1               
    matplotlib             3.5.2               
    monotonic              1.5                 
    multidict              6.0.2               
    multiprocess           0.70.13             
    netifaces              0.10.4              
    numpy                  1.23.3              
    oauthlib               3.1.0               
    olefile                0.46                
    packaging              21.3                
    pandas                 1.5.0               
    paramiko               2.6.0               
    pexpect                4.6.0               
    Pillow                 9.1.1               
    pip                    20.0.2              
    protobuf               3.6.1               
    pyarrow                9.0.0               
    pyasn1                 0.4.8               
    pycairo                1.16.2              
    pycups                 1.9.73              
    PyGObject              3.36.0              
    PyJWT                  1.7.1               
    pymacaroons            0.13.0              
    PyNaCl                 1.3.0               
    pyparsing              3.0.9               
    pyproj                 3.3.1               
    pyRFC3339              1.1                 
    pyrsistent             0.18.1              
    pyshp                  2.3.1               
    python-apt             2.0.0+ubuntu0.20.4.7
    python-dateutil        2.8.2               
    python-debian          0.1.36ubuntu1       
    pytz                   2022.4              
    pyxdg                  0.26                
    PyYAML                 5.3.1               
    reportlab              3.5.34              
    requests               2.22.0              
    requests-unixsocket    0.2.0               
    responses              0.18.0              
    SecretStorage          2.3.1               
    setuptools             45.2.0              
    Shapely                1.8.2               
    simplejson             3.16.0              
    six                    1.14.0              
    systemd-python         234                 
    tqdm                   4.64.1              
    typing-extensions      4.3.0               
    ubuntu-advantage-tools 27.10               
    ubuntu-drivers-common  0.0.0               
    ufw                    0.36                
    unattended-upgrades    0.1                 
    urllib3                1.21.1              
    usb-creator            0.3.7               
    wadllib                1.3.3               
    Werkzeug               2.2.2               
    wheel                  0.34.2              
    xkit                   0.0.0               
    xxhash                 3.0.0               
    yarl                   1.8.1               
    zipp                   3.11.0
    
    
    opened by zjuneilzhou 0
  • BUG: remaining incompatibility between cartopy 0.21.1 and shapely 2.0 (?)

    BUG: remaining incompatibility between cartopy 0.21.1 and shapely 2.0 (?)

    Description

    The new release of cartopy (0.21.1) breaks two tests in yt by raising this DeprecationWarning:

     DeprecationWarning: The 'geom_factory' function is deprecated in Shapely 2.0, and will be removed in a future version
    

    I am reasonably confident that this warning is triggered within cartopy and out of control from yt's standpoint. See the tests logs for example: https://github.com/yt-project/yt/actions/runs/3684703466/jobs/6234753758

    Code to reproduce

    git clone [email protected]:yt-project/yt.git
    cd yt
    python -m pip install -e .
    python -m pip install pytest
    # ... install cartopy too
    
    pytest yt/visualization/tests/test_geo_projections.py::TestGeoProjections::test_extent
    

    Traceback

    yt/visualization/tests/test_geo_projections.py:172: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    yt/visualization/plot_window.py:1819: in __init__
        PWViewerMPL.__init__(
    yt/visualization/plot_window.py:868: in __init__
        PlotWindow.__init__(self, *args, **kwargs)
    yt/visualization/plot_window.py:249: in __init__
        self._setup_plots()
    yt/visualization/plot_window.py:1121: in _setup_plots
        self.plots[f] = WindowPlotMPL(
    yt/visualization/plot_window.py:2497: in __init__
        self._init_image(data, extent, aspect)
    yt/visualization/base_plot_types.py:298: in _init_image
        self._validate_axes_extent(extent, transform)
    yt/visualization/base_plot_types.py:396: in _validate_axes_extent
        self.axes.set_extent(extent, crs=transform)
    ../../../.pyenv/versions/yt-dev/lib/python3.10/site-packages/cartopy/mpl/geoaxes.py:860: in set_extent
        projected = self.projection.project_geometry(domain_in_crs, crs)
    ../../../.pyenv/versions/yt-dev/lib/python3.10/site-packages/cartopy/crs.py:808: in project_geometry
        return getattr(self, method_name)(geometry, src_crs)
    ../../../.pyenv/versions/yt-dev/lib/python3.10/site-packages/cartopy/crs.py:814: in _project_line_string
        return cartopy.trace.project_linear(geometry, src_crs, self)
    lib/cartopy/trace.pyx:608: in cartopy.trace.project_linear
        ???
    lib/cartopy/trace.pyx:74: in cartopy.trace.shapely_from_geos
        ???
    
    ...
    
    E       DeprecationWarning: The 'geom_factory' function is deprecated in Shapely 2.0, and will be removed in a future version
    

    A simpler, more self-contained reproducer (but it's harder to see the traceback):

    # t.py
    import yt
    from yt.testing import fake_amr_ds
    
    yt.set_log_level("error")
    
    ds = fake_amr_ds(geometry="geographic")
    axis = "altitude"
    slc = yt.SlicePlot(
        ds, "altitude", ("stream", "Density"), origin="native", width=(80.0, 50.0)
    )
    
    $ python -W always::DeprecationWarning t.py
    /Users/robcleme/.pyenv/versions/yt-dev/lib/python3.10/site-packages/cartopy/crs.py:814: DeprecationWarning: The 'geom_factory' function is deprecated in Shapely 2.0, and will be removed in a future version
      return cartopy.trace.project_linear(geometry, src_crs, self)
    
    Full environment definition

    Operating system

    Seen on Windows and MacOS

    versions

    cartopy==0.21.1
    shapely==0.21.1
    yt==4.1.2
    
    opened by neutrinoceros 3
  • patch filling uncorrect

    patch filling uncorrect

    I have noticed that patches are not filled properly. I need this structure because patches can describe polygons with holes. When you use fill method it is correct but only the exterior of the polygon can be plotted.

    image

    image

    In red the patch filled uncorrectly. In blue the polygon filled (only exteriors with no holes).

    Here is a simplified test:

    import matplotlib.pyplot as plt
    from matplotlib.path import Path
    from matplotlib.patches import PathPatch
    from shapely.geometry import Polygon
    import cartopy.crs as ccrs
    
    #-----------------------------------------
    def polygon2patch(poly, **kwargs):
        path = Path.make_compound_path(
               Path(poly.exterior.coords),
               *[Path(ring.coords) for ring in poly.interiors])
        patch = PathPatch(path, **kwargs)
        return patch
    
    #-----------------------------------------
    fig = plt.figure(figsize=(10,5))
    
    map_proj = ccrs.Orthographic(-80, 50)
    map_proj._threshold /= 100.  # the default values is bad, users need to set them manually
    ax = fig.add_subplot(1, 1, 1, projection=map_proj)
    
    transform = ccrs.Geodetic()
    
    p1 =  Polygon([(20, 20), (80, 20), (100,70), (10, 70)])
    p2 =  Polygon([(40, 25), (40, 30), (45, 30), (45, 25)])
    p3 =  Polygon([(50, 35), (50, 40), (55, 40)])
    polygon = Polygon(p1.exterior.coords, holes=[p2.exterior.coords, p3.exterior.coords])
    
    x = polygon.exterior.coords.xy[0]
    y = polygon.exterior.coords.xy[1]
    ax.fill(x, y, transform=transform, color="blue", lw=0.5, edgecolor="black", alpha=0.5)
    
    patch = polygon2patch(polygon, transform=transform, facecolor="red", lw=0.5, edgecolor="black")
    ax.add_patch(patch)
    
    ax.set_global()
    ax.gridlines()
    plt.show()
    

    Tested with cartopy 0.21.0 Issue relative to https://stackoverflow.com/questions/74710358/how-to-detect-inner-polygons-from-a-multipolygon-shapely-object

    opened by PBrockmann 2
  • Installing v0.21 with pip does not work

    Installing v0.21 with pip does not work

    Description

    It looks like issue #2053 is playing up again, while trying to install Cartopy v0.21.0 with pip. It gives the same error as before: inconsistent version: expected '0.21.0', but metadata has '0.0.0'.

    Luckily the workaround pip3 install --use-deprecated=legacy-resolver cartopy still works, but apparently the issue has not been fully resolved yet.

    Code to reproduce

    $ pip3 install cartopy
    

    Console output

    Collecting cartopy
      Downloading Cartopy-0.21.0.tar.gz (10.9 MB)
         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.9/10.9 MB 22.0 MB/s eta 0:00:00
      Installing build dependencies ... done
      Getting requirements to build wheel ... done
      Preparing metadata (pyproject.toml) ... done
    Discarding https://files.pythonhosted.org/packages/40/0c/b673fb89eadf798654652df3dda4b8229ca747568976b7a919d7d65e656e/Cartopy-0.21.0.tar.gz (from https://pypi.org/simple/cartopy/) (requires-python:>=3.8): Requested cartopy from https://files.pythonhosted.org/packages/40/0c/b673fb89eadf798654652df3dda4b8229ca747568976b7a919d7d65e656e/Cartopy-0.21.0.tar.gz has inconsistent version: expected '0.21.0', but metadata has '0.0.0'
      Downloading Cartopy-0.20.3.tar.gz (10.8 MB)
         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.8/10.8 MB 21.0 MB/s eta 0:00:00
      Installing build dependencies ... done
      Getting requirements to build wheel ... done
      Preparing metadata (pyproject.toml) ... done
    Discarding https://files.pythonhosted.org/packages/98/a9/0e4000eabadfcff6373c0fec790863b543b919cbfec18aed60d71ba67d5d/Cartopy-0.20.3.tar.gz (from https://pypi.org/simple/cartopy/) (requires-python:>=3.7): Requested cartopy from https://files.pythonhosted.org/packages/98/a9/0e4000eabadfcff6373c0fec790863b543b919cbfec18aed60d71ba67d5d/Cartopy-0.20.3.tar.gz has inconsistent version: expected '0.20.3', but metadata has '0.0.0'
      Downloading Cartopy-0.20.2.tar.gz (10.8 MB)
         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.8/10.8 MB 13.8 MB/s eta 0:00:00
      Installing build dependencies ... done
      Getting requirements to build wheel ... done
      Preparing metadata (pyproject.toml) ... done
    Discarding https://files.pythonhosted.org/packages/f6/55/1e1c737dc9436b320deead73d1c455ddbb74b8b6992081863492f6f6378a/Cartopy-0.20.2.tar.gz (from https://pypi.org/simple/cartopy/) (requires-python:>=3.7): Requested cartopy from https://files.pythonhosted.org/packages/f6/55/1e1c737dc9436b320deead73d1c455ddbb74b8b6992081863492f6f6378a/Cartopy-0.20.2.tar.gz has inconsistent version: expected '0.20.2', but metadata has '0.0.0'
      Downloading Cartopy-0.20.1.tar.gz (10.8 MB)
         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.8/10.8 MB 13.7 MB/s eta 0:00:00
      Installing build dependencies ... done
      Getting requirements to build wheel ... done
      Preparing metadata (pyproject.toml) ... done
    Discarding https://files.pythonhosted.org/packages/fc/59/aa52698e3838f4cd0e7eaa75bd86837e9e0b05041dbdaee3cda2fffced06/Cartopy-0.20.1.tar.gz (from https://pypi.org/simple/cartopy/) (requires-python:>=3.7): Requested cartopy from https://files.pythonhosted.org/packages/fc/59/aa52698e3838f4cd0e7eaa75bd86837e9e0b05041dbdaee3cda2fffced06/Cartopy-0.20.1.tar.gz has inconsistent version: expected '0.20.1', but metadata has '0.0.0'
      Downloading Cartopy-0.20.0.tar.gz (10.8 MB)
         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.8/10.8 MB 16.7 MB/s eta 0:00:00
      Installing build dependencies ... done
      Getting requirements to build wheel ... done
      Preparing metadata (pyproject.toml) ... done
    Discarding https://files.pythonhosted.org/packages/0f/c0/58453b036e79046d211f083880d58dcce787e7e07647ac25dc46c6555099/Cartopy-0.20.0.tar.gz (from https://pypi.org/simple/cartopy/) (requires-python:>=3.7): Requested cartopy from https://files.pythonhosted.org/packages/0f/c0/58453b036e79046d211f083880d58dcce787e7e07647ac25dc46c6555099/Cartopy-0.20.0.tar.gz has inconsistent version: expected '0.20.0', but metadata has '0.0.0'
      Downloading Cartopy-0.19.0.post1.tar.gz (12.1 MB)
         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12.1/12.1 MB 9.1 MB/s eta 0:00:00
      Installing build dependencies ... done
      Getting requirements to build wheel ... done
      Preparing metadata (pyproject.toml) ... done
    Discarding https://files.pythonhosted.org/packages/ed/ca/524ce33692df3faeaa56852fb6a33b0b410be94cc288417565b96fef3f64/Cartopy-0.19.0.post1.tar.gz (from https://pypi.org/simple/cartopy/) (requires-python:>=3.5): Requested cartopy from https://files.pythonhosted.org/packages/ed/ca/524ce33692df3faeaa56852fb6a33b0b410be94cc288417565b96fef3f64/Cartopy-0.19.0.post1.tar.gz has inconsistent version: expected '0.19.0.post1', but metadata has '0.0.0'
      Downloading Cartopy-0.18.0.tar.gz (14.4 MB)
         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 14.4/14.4 MB 13.5 MB/s eta 0:00:00
      Preparing metadata (setup.py) ... done
    Requirement already satisfied: numpy>=1.10 in /opt/homebrew/lib/python3.10/site-packages (from cartopy) (1.23.4)
    Requirement already satisfied: shapely>=1.5.6 in /opt/homebrew/lib/python3.10/site-packages (from cartopy) (1.8.5.post1)
    Requirement already satisfied: pyshp>=1.1.4 in /opt/homebrew/lib/python3.10/site-packages (from cartopy) (2.3.1)
    Requirement already satisfied: six>=1.3.0 in /opt/homebrew/lib/python3.10/site-packages (from cartopy) (1.16.0)
    Requirement already satisfied: setuptools>=0.7.2 in /opt/homebrew/lib/python3.10/site-packages (from cartopy) (65.4.1)
    Building wheels for collected packages: cartopy
      Building wheel for cartopy (setup.py) ... error
      error: subprocess-exited-with-error
      
      × python setup.py bdist_wheel did not run successfully.
      │ exit code: 1
      ╰─> [271 lines of output]
          (...)
          1 error generated.
          error: command '/usr/bin/clang' failed with exit code 1
          [end of output]
      
      note: This error originates from a subprocess, and is likely not a problem with pip.
      ERROR: Failed building wheel for cartopy
      Running setup.py clean for cartopy
    Failed to build cartopy
    Installing collected packages: cartopy
      Running setup.py install for cartopy ... error
      error: subprocess-exited-with-error
      
      × Running setup.py install for cartopy did not run successfully.
      │ exit code: 1
      ╰─> [273 lines of output]
          (...)
          1 error generated.
          error: command '/usr/bin/clang' failed with exit code 1
          [end of output]
      
      note: This error originates from a subprocess, and is likely not a problem with pip.
    error: legacy-install-failure
    
    × Encountered error while trying to install package.
    ╰─> cartopy
    
    note: This is an issue with the package mentioned above, not pip.
    hint: See above for output from the failure.
    
    Full environment definition

    Operating system

    macOS 12.6, M1 Pro chip

    Cartopy version

    0.21.0 (but shows up as 0.0.0 in pip list due to the workaround)

    pip list

    Package         Version
    --------------- -----------
    attrs           22.1.0
    Cartopy         0.0.0
    certifi         2022.9.24
    click           8.1.3
    click-plugins   1.1.1
    cligj           0.7.2
    compact-json    1.1.3
    contourpy       1.0.5
    cycler          0.11.0
    et-xmlfile      1.1.0
    Fiona           1.8.22
    fonttools       4.37.4
    GDAL            3.5.3
    geopandas       0.11.1
    kiwisolver      1.4.4
    matplotlib      3.6.1
    more-itertools  9.0.0
    munch           2.5.0
    networkx        2.8.7
    numbers-parser  3.7.0
    numpy           1.23.4
    openpyxl        3.0.10
    packaging       21.3
    pandas          1.5.0
    Pillow          9.2.0
    pip             22.3.1
    protobuf        4.21.8
    pyparsing       3.0.9
    pyproj          3.4.0
    PyQt6           6.4.0
    PyQt6-Qt6       6.4.1
    PyQt6-sip       13.4.0
    pyshp           2.3.1
    python-dateutil 2.8.2
    python-snappy   0.6.1
    pytz            2022.4
    regex           2022.9.13
    roman           3.3
    scipy           1.9.3
    setuptools      65.4.1
    Shapely         1.8.5.post1
    six             1.16.0
    wheel           0.37.1
    
    opened by rbaard1 9
  • Proposal for faster transform option

    Proposal for faster transform option

    People often complain about how slow Cartopy is lately since we moved over to pyproj and not the direct C bindings we were using. If a user knows what they are doing and wants something fast or for a small domain with no wrapped coordinates, we can help them out and give a much faster option, so perhaps we should do that. Below is a quick proposal for how this could work.

    Feedback on this would be most welcome! This is just a thought at this point, but perhaps one that others have better ideas for.

    Proposal

    Add a fast-path to CRS.project_geometry() that immediately transforms all of the points in the geometry to the destination projection. This is what basemap does and it is much faster than handling interpolations/bisections between points to make smoother lines. It is equivalent to the fast_transform argument that we added to the contour() functions.

    There are a few ways we could implement this and I'm not sure which would be best / most useful.

    1. A global configuration attribute somewhere: cartopy.interpolate_paths = False. Benefit: easy to change behavior Downside: can't individually control which paths/projections are affected by this.
    2. Add more fast_transform keyword decorators to plotting functions. Benefit: we already have this written Downside: would require some more work on which x/y arguments to transform for each plotting function, and would also probably require some work on the add_patch() etc... areas of the code that aren't directly plotting functions.
    3. Add a new keyword / property to CRS and subclasses that could control this on a per-CRS basis. Benefit: user could decide which projection and artists to interpolate or not (i.e. you could have both pc_slow = PlateCarree(interpolate_paths=True) andpc_fast = PlateCarree(interpolate_paths=False)`) Downside: Would require more work on keeping CRS's consistent and subclassing of them would add another somewhat arbitrary keyword that isn't CRS-specific, bur rather Cartopy-specific.

    Issues with this approach

    There are some downsides to this associated with long paths and wrapped coordinates. For example, the "logo" example:

    current (with interpolated paths): https://scitools.org.uk/cartopy/docs/latest/gallery/miscellanea/logo.html

    image

    proposed (no interpolation along paths): Figure_1

    Code to reproduce

    Example of some minimal code that could be adapted/expanded upon.

    diff --git a/lib/cartopy/crs.py b/lib/cartopy/crs.py
    index 30c4170e..a77dbb4f 100644
    --- a/lib/cartopy/crs.py
    +++ b/lib/cartopy/crs.py
    @@ -19,6 +19,7 @@ import math
     import warnings
     
     import numpy as np
    +import shapely.ops
     import shapely.geometry as sgeom
     from pyproj import Transformer
     from pyproj.exceptions import ProjError
    @@ -123,7 +124,7 @@ class CRS(_CRS):
         #: Whether this projection can handle ellipses.
         _handles_ellipses = True
     
    -    def __init__(self, proj4_params, globe=None):
    +    def __init__(self, proj4_params, globe=None, interpolate_paths=True):
             """
             Parameters
             ----------
    @@ -137,7 +138,11 @@ class CRS(_CRS):
             globe: :class:`~cartopy.crs.Globe` instance, optional
                 If omitted, the default Globe instance will be created.
                 See :class:`~cartopy.crs.Globe` for details.
    -
    +        interpolate_paths: bool, default True
    +            Whether to interpolate paths in this CRS. Setting this
    +            to False can significantly improve performance, but
    +            paths will not wrap and may look jagged if there
    +            are not enough points in the initial geometry.
             """
             # for compatibility with pyproj.CRS and rasterio.crs.CRS
             try:
    @@ -187,6 +192,7 @@ class CRS(_CRS):
                         init_items.append(f'+{k}')
                 self.proj4_init = ' '.join(init_items) + ' +no_defs'
             super().__init__(self.proj4_init)
    +        self.interpolate_paths = interpolate_paths
     
         def __eq__(self, other):
             if isinstance(other, CRS) and self.proj4_init == other.proj4_init:
    @@ -801,6 +807,11 @@ class Projection(CRS, metaclass=ABCMeta):
             elif not isinstance(src_crs, CRS):
                 raise TypeError('Source CRS must be an instance of CRS'
                                 ' or one of its subclasses, or None.')
    +
    +        if not getattr(src_crs, 'interpolate_paths', True):
    +            pyproj_trans = _get_transformer_from_crs(src_crs, self).transform
    +            return shapely.ops.transform(pyproj_trans, geometry)
    +
             geom_type = geometry.geom_type
             method_name = self._method_map.get(geom_type)
             if not method_name:
    
    Type: Question 
    opened by greglucas 0
Releases(v0.21.1)
  • v0.21.1(Dec 12, 2022)

    This is a patch release to allow shapely 2.0 to be installed and used with Cartopy.

    What's Changed

    • Compatibility with shapely 2.0 (remove usage of lgeos) by @jorisvandenbossche in https://github.com/SciTools/cartopy/pull/2110

    Full Changelog: https://github.com/SciTools/cartopy/compare/v0.21.0...v0.21.1

    Source code(tar.gz)
    Source code(zip)
  • v0.21.0(Sep 10, 2022)

    Installation Updates

    • Pyproj now handles all the transformations and therefore the PROJ header files are no longer explicitly required by Cartopy.
    • Shapely 2.0 is not compatible with this release of Cartopy, and thus Shapely must be pinned <2 during installation.

    What's Changed

    • Loosen OSGB tests if grids are unavailable by @QuLogic in https://github.com/SciTools/cartopy/pull/1884
    • Remove use of distutils by @QuLogic in https://github.com/SciTools/cartopy/pull/1883
    • Regenerate all tick test images by @QuLogic in https://github.com/SciTools/cartopy/pull/1882
    • Use UTF8 degree symbol directly by @QuLogic in https://github.com/SciTools/cartopy/pull/1885
    • Various test improvements by @QuLogic in https://github.com/SciTools/cartopy/pull/1887
    • DOC: Adding an environment file for development by @greglucas in https://github.com/SciTools/cartopy/pull/1890
    • added missing shapefile group to download script by @georgemccabe in https://github.com/SciTools/cartopy/pull/1894
    • Switch to pytest-mpl for image testing by @QuLogic in https://github.com/SciTools/cartopy/pull/1891
    • MNT: Update matplotlib.axes calls to super() by @greglucas in https://github.com/SciTools/cartopy/pull/1896
    • Update streamplot test for Matplotlib 3.5.0rc1 by @QuLogic in https://github.com/SciTools/cartopy/pull/1899
    • Parametrize inline gridliner tests by @QuLogic in https://github.com/SciTools/cartopy/pull/1900
    • Use Gridliner transform for inline labels also by @QuLogic in https://github.com/SciTools/cartopy/pull/1903
    • Remove deprecations by @greglucas in https://github.com/SciTools/cartopy/pull/1897
    • FIX: pcolor shading with nearest by @greglucas in https://github.com/SciTools/cartopy/pull/1892
    • fix imshow when image is RGBA by @ludwigVonKoopa in https://github.com/SciTools/cartopy/pull/1906
    • address shapely 2.0 deprecations by @akrherz in https://github.com/SciTools/cartopy/pull/1914
    • Added support for 2-dimensional coord in add_cyclic_point. by @mcuntz in https://github.com/SciTools/cartopy/pull/1753
    • MNT: Add a cache to the Transformer creation in transform_points by @greglucas in https://github.com/SciTools/cartopy/pull/1918
    • FIX: Remove edgecolor from filled features by @greglucas in https://github.com/SciTools/cartopy/pull/1933
    • DOC: Add instructions for contributing to Cartopy by @greglucas in https://github.com/SciTools/cartopy/pull/1939
    • [doc] Provide install instructions for Ubuntu/Debian by @gpotter2 in https://github.com/SciTools/cartopy/pull/1941
    • TST: Update test tolerances for MPL 3.5 by @greglucas in https://github.com/SciTools/cartopy/pull/1938
    • MNT: Remove requests and flufl installations by @greglucas in https://github.com/SciTools/cartopy/pull/1949
    • DEPR: implement API changes that were scheduled for cartopy>0.18 by @neutrinoceros in https://github.com/SciTools/cartopy/pull/1957
    • MNT: Update the natural earth test by @greglucas in https://github.com/SciTools/cartopy/pull/1962
    • CI: Fix min dependency build by switching to Linux by @greglucas in https://github.com/SciTools/cartopy/pull/1963
    • Parametrize projection test images by @QuLogic in https://github.com/SciTools/cartopy/pull/1964
    • FIX: Calculate bbox for pcolormesh by @greglucas in https://github.com/SciTools/cartopy/pull/1958
    • CI: Avoid newer openssl version due to WMTS tests by @greglucas in https://github.com/SciTools/cartopy/pull/1977
    • Rename master branch to main by @QuLogic in https://github.com/SciTools/cartopy/pull/1976
    • fix title of projections.rst by @mathause in https://github.com/SciTools/cartopy/pull/1983
    • FIX: Add clip limits to Nightshade floating point calculations by @greglucas in https://github.com/SciTools/cartopy/pull/1989
    • TST: Increase dtype of sample data calculations by @greglucas in https://github.com/SciTools/cartopy/pull/1994
    • ENH: Allow a single geometry in add_geometries by @greglucas in https://github.com/SciTools/cartopy/pull/1999
    • Minimum Python 3.8 by @greglucas in https://github.com/SciTools/cartopy/pull/1990
    • Flake8 updating by @greglucas in https://github.com/SciTools/cartopy/pull/1991
    • MNT: Remove convert_path from setup script by @greglucas in https://github.com/SciTools/cartopy/pull/2027
    • API: GH #2013 make regrid arguments, docstring consistent by @ellequelle in https://github.com/SciTools/cartopy/pull/2014
    • TST: Removing unnecessary cleanup decorator by @greglucas in https://github.com/SciTools/cartopy/pull/2023
    • TST: Force an orientation in the lakes shapereader test by @greglucas in https://github.com/SciTools/cartopy/pull/2028
    • Revert "CI: Avoid newer openssl version due to WMTS tests" by @greglucas in https://github.com/SciTools/cartopy/pull/2038
    • examples: define 'sample_data' for all examples by @phil-blain in https://github.com/SciTools/cartopy/pull/2044
    • Explicitly calling numpy asanyarray over the inputs. by @axnsantana in https://github.com/SciTools/cartopy/pull/2050
    • FIX: setup.py should output "... 8.0.0 or later" if proj is missing or too old by @weatherfrog in https://github.com/SciTools/cartopy/pull/1992
    • Remove use of setuptools_scm_git_archive by @dopplershift in https://github.com/SciTools/cartopy/pull/2057
    • TST: Change testing method for tolerances by @greglucas in https://github.com/SciTools/cartopy/pull/2056
    • Fix image tests by @dopplershift in https://github.com/SciTools/cartopy/pull/2058
    • Replace _autoscaleX_on with get_autoscalex_on() in GeoAxes by @holzschu in https://github.com/SciTools/cartopy/pull/2054
    • docs: fix simple typo, noticable -> noticeable by @timgates42 in https://github.com/SciTools/cartopy/pull/2061
    • Additional support for LINZ Maps Tiles by @aluthfian in https://github.com/SciTools/cartopy/pull/2048
    • Use contextlib.ExitStack in more places by @QuLogic in https://github.com/SciTools/cartopy/pull/2070
    • MNT: Change map_projection to projection for Axes creation by @greglucas in https://github.com/SciTools/cartopy/pull/1980
    • Pyproj geodesic trace by @greglucas in https://github.com/SciTools/cartopy/pull/2069
    • Fix Axes clearing with Matplotlib 3.6+ by @QuLogic in https://github.com/SciTools/cartopy/pull/2071
    • FIX: change deprecated map_projection in test suite by @greglucas in https://github.com/SciTools/cartopy/pull/2073
    • TST: Update test path search and pytest deprecations by @greglucas in https://github.com/SciTools/cartopy/pull/2075
    • Add functionality for correct transforms in ax.annotate by @abrammer in https://github.com/SciTools/cartopy/pull/2065
    • Calculate vertical coord, even if not explicitely requested by @guziy in https://github.com/SciTools/cartopy/pull/2077
    • FIX: Allow values less than -180 to be wrapped too by @greglucas in https://github.com/SciTools/cartopy/pull/1998
    • DOC: What's new for v0.21 release by @greglucas in https://github.com/SciTools/cartopy/pull/2074

    New Contributors

    • @georgemccabe made their first contribution in https://github.com/SciTools/cartopy/pull/1894
    • @ludwigVonKoopa made their first contribution in https://github.com/SciTools/cartopy/pull/1906
    • @mcuntz made their first contribution in https://github.com/SciTools/cartopy/pull/1753
    • @gpotter2 made their first contribution in https://github.com/SciTools/cartopy/pull/1941
    • @neutrinoceros made their first contribution in https://github.com/SciTools/cartopy/pull/1957
    • @mathause made their first contribution in https://github.com/SciTools/cartopy/pull/1983
    • @ellequelle made their first contribution in https://github.com/SciTools/cartopy/pull/2014
    • @phil-blain made their first contribution in https://github.com/SciTools/cartopy/pull/2044
    • @axnsantana made their first contribution in https://github.com/SciTools/cartopy/pull/2050
    • @weatherfrog made their first contribution in https://github.com/SciTools/cartopy/pull/1992
    • @holzschu made their first contribution in https://github.com/SciTools/cartopy/pull/2054
    • @aluthfian made their first contribution in https://github.com/SciTools/cartopy/pull/2048
    • @abrammer made their first contribution in https://github.com/SciTools/cartopy/pull/2065
    • @guziy made their first contribution in https://github.com/SciTools/cartopy/pull/2077

    Full Changelog: https://github.com/SciTools/cartopy/compare/v0.20.0...v0.21.0

    Source code(tar.gz)
    Source code(zip)
  • v0.20.3(Jun 29, 2022)

    This is the third bug fix release in the 0.20.x series. This mainly fixes a problem with installing from the existing PyPI source distributions with new setuptools_scm.

    What's Changed

    • FIX: Add clip limits to Nightshade floating point calculations by @greglucas in https://github.com/SciTools/cartopy/pull/1989
    • TST: Change testing method for tolerances by @greglucas in https://github.com/SciTools/cartopy/pull/2056
    • Remove use of setuptools_scm_git_archive by @dopplershift in https://github.com/SciTools/cartopy/pull/2057
    • Fix image tests by @dopplershift in https://github.com/SciTools/cartopy/pull/2058

    Full Changelog: https://github.com/SciTools/cartopy/compare/v0.20.2...v0.20.3

    Source code(tar.gz)
    Source code(zip)
  • v0.20.2(Jan 13, 2022)

    This is the second bugfix release of the v0.20.x series.

    What's Changed

    • Address Shapely 2.0 Deprecations by @akrherz in https://github.com/SciTools/cartopy/pull/1930
    • Cache transformer crs for v0.20.x by @greglucas in https://github.com/SciTools/cartopy/pull/1931
    • Backport recent master commits to v0.20.x by @greglucas in https://github.com/SciTools/cartopy/pull/1969

    Full Changelog: https://github.com/SciTools/cartopy/compare/v0.20.1...v0.20.2

    Source code(tar.gz)
    Source code(zip)
  • v0.20.1(Oct 20, 2021)

    This is the first bugfix of the v0.20.x series.

    See the list of bugfixes on the milestone: https://github.com/SciTools/cartopy/milestone/31?closed=1

    Source code(tar.gz)
    Source code(zip)
  • v0.20.0(Sep 17, 2021)

    Changes include:

    Using pyproj for coordinate transformations, which added support for building with Proj 8. Updating the download URLs for the NaturalEarth and Mapbox APIs, and bundling a download script in the release. Better handling of gridliner visibility and labeling. Updated documentation. And many others.

    There are several bug fixes as well. See the milestone for more information.

    Source code(tar.gz)
    Source code(zip)
  • v0.19.0.post1(Apr 23, 2021)

    This release only updates the contents contained in the sdist as the previous version did not contain the compiled Cython extensions. All features are the same as v0.19.0

    Source code(tar.gz)
    Source code(zip)
  • v0.19.0(Apr 21, 2021)

  • v0.18.0(May 4, 2020)

    Major changes include:

    • Support for building against Proj 6.
    • Support for Python 3.7 and 3.8.
    • Support for Matplotlib 3.2 and 3.3.
    • Support for labelling gridlines on all projections.
    • Support for labelling gridlines within plot boundaries instead of edges.
    • Support for labelling of contours.

    and many others.

    There are several bug fixes as well. See the milestone for more information.

    Contributors

    @MBradbury @MarkWieczorek @QuLogic @ahuang11 @dopplershift @greglucas @htonchia @hugovk @kacmak7 @kaedonkers @ocefpaf @pelson @pharshalp @raphaelquast @sadielbartholomew @shevawen @snowman2 @stefraynaud @stephenworsley @wrongkindofdoctor @zbruick

    Source code(tar.gz)
    Source code(zip)
  • v0.17.0(Nov 17, 2018)

    Version 0.17 (2018/11/17)

    Issues Closed

    In this release 30 issues were closed.

    Pull Requests Merged

    • PR 1201 - Make nightshade example figure size consistent.
    • PR 1199 - TST: Disable downloads in autoscaler tests.
    • PR 1197 - SlippyImageArtist redraw on mouse down
    • PR 1196 - Add pretty Jupyter repr of Projections
    • PR 1195 - Add raster caching to smooth pan/zoom
    • PR 1191 - Fix bug in exception for outdated Proj.
    • PR 1189 - Fix up the satellite projections (Fixes #1144)
    • PR 1188 - Add a cartopy.io.img_tiles.Stamen class (1013)
    • PR 1185 - TST: Install all doc deps at the same time.
    • PR 1182 - Add Equal Earth projection
    • PR 1181 - Moved the nightshade implementation into a feature.
    • PR 1180 - Improve warped rectangular projections
    • PR 1178 - Fixes to testing, improved travis.yml and use plt instead of pyplot
    • PR 1173 - Add links to the Gitter chatroom
    • PR 1170 - Update mapbox tiles interface
    • PR 1169 - Improve docs for Cython extensions (996)
    • PR 1168 - Add Eckert family of projections
    • PR 1167 - Normalize and (slightly) speedup boundary and limit calculations
    • PR 1163 - Add Travis configuration to upload sdists to PyPI (1163)
    • PR 1162 - Stop guessing whether Paths are polygons on new MPL. (158, 1078)
    • PR 1160 - Use both x/y limits to determine Mercator threshold. (1155)
    • PR 1159 - TST: Allow new test images to use any mpl style.
    • PR 1158 - TST: Update web tiles result image.
    • PR 1153 - Update sphinx-gallery to 0.2.0
    • PR 1150 - Use pykdtree when available
    • PR 1148 - Fuzz more projection boundaries to work with proj >= 5
    • PR 1146 - Fix projected line strings getting truncated early. (802, 724, 1131, 1015)
    • PR 1145 - TST: Add a fixture enabling SRTM login using envvars.
    • PR 1143 - Update SRTM url and fix tests
    • PR 1139 - Add more projection-specific tests
    • PR 1138 - Add support for other radii in Miller projection + tests
    • PR 1137 - Fix some minor typos and style issues
    • PR 1136 - Deprecate clip_path.
    • PR 1135 - Adding a nightshade/terminator feature (1128)
    • PR 1132 - BLD: Add pyproject.toml defining build requirements. (1112)
    • PR 1130 - Fix support for Matplotlib 3.0.0
    • PR 1129 - TST: Speed up travis a bit
    • PR 1124 - ENH: Support proj4 v5+ (1097, 1071, 1045)
    • PR 1123 - DOC: Fix some minor issues
    • PR 1122 - Fix deprecations from NumPy
    • PR 1121 - TST: Fix license checks with new git and Python.
    • PR 1103 - Add all 60 zones of the UTM projection to the docs projection list
    • PR 1101 - Use tuple for multidimensional array indexing
    • PR 1100 - Prevent segfault in LambertAzimuthalEqualArea (1099)
    • PR 1096 - Input validation for Geodesic.inverse, and a new Geodesic.geometry_length method
    • PR 1091 - TST: Add unit test for tranform_point with empty arrays
    • PR 1090 - Fix crash
    • PR 1083 - Make changes suggested to solve gshhs zipfile path problems on windows
    • PR 1075 - conda list --explicit
    • PR 1070 - Update image tests for matplotlib 2.1.
    • PR 1069 - Make use of README.md in setup.py, and update README.md to include some badges and an image
    • PR 1063 - DOC: Update conda to try to fix circleci.
    • PR 1062 - Fix transform_points for empty arrays (1060)
    • PR 1057 - DOC: Add Get in touch section
    • PR 1054 - DOC: change natural_earth to shapereader.natural_earth in example
    • PR 1053 - add epsg 3857 support to wmts
    • PR 1052 - force string conversion for wmts row, col and tile set id
    • PR 1043 - Add more options to Mercator projection (1040)
    • PR 1042 - Normalize grid coordinates used for interpolation.
    • PR 1041 - Drop support for Matplotlib < 1.5.1 and NumPy < 1.10
    • PR 1037 - Add ne_ prefix to NaturalEarth cache files.
    • PR 1036 - Ensure copyright & license is followed for sphinx-gallery.
    • PR 1034 - Update some doc refs
    • PR 1032 - Improvements to test metadata
    • PR 1031 - Add a zenodo badge for cartopy.
    • PR 1029 - Better support colour overrides for Features.
    • PR 1022 - Add support for Equidistant Conic projection.
    • PR 1019 - Added the styler keyword to allow on-demand / callback to determine styling of geometries in the matplotlib interface. (580)
    • PR 1000 - Creating a Fiona Reader for shapefiles
    • PR 951 - Add repr_html to Projection class

    In this release 70 pull requests were closed.

    Contributors

    @acrosby, @ajdawson, @bjlittle, @dkillick, @dopplershift, @greglucas, @kaedonkers, @LukeC92, , @manugarri, @pelson, @QuLogic, and @raybellwaves contributed changes in this release.

    Source code(tar.gz)
    Source code(zip)
  • v0.16.0(Feb 21, 2018)

  • v0.15.1(Feb 28, 2017)

  • v0.15.0(Feb 3, 2017)

  • v0.15.0rc1(Jan 10, 2017)

  • v0.14.3(Oct 19, 2016)

  • v0.14.2(Apr 20, 2016)

  • v0.14.1(Apr 11, 2016)

  • v0.14.0(Mar 27, 2016)

  • v0.13.1(Dec 18, 2015)

  • v0.12.0(Apr 14, 2015)

  • v0.11.2(Aug 22, 2014)

  • v0.11.1(Jun 27, 2014)

Owner
SciTools is a collaborative effort to produce powerful Python-based open-source tools for Earth scientists
Python module for drawing and rendering beautiful atoms and molecules using Blender.

Batoms is a Python package for editing and rendering atoms and molecules objects using blender. A Python interface that allows for automating workflows.

Xing Wang 1 Jul 06, 2022
Implement the Perspective open source code in preparation for data visualization

Task Overview | Installation Instructions | Link to Module 2 Introduction Experience Technology at JP Morgan Chase Try out what real work is like in t

Abdulazeez Jimoh 1 Jan 23, 2022
The open-source tool for building high-quality datasets and computer vision models

The open-source tool for building high-quality datasets and computer vision models. Website • Docs • Try it Now • Tutorials • Examples • Blog • Commun

Voxel51 2.4k Jan 07, 2023
An(other) implementation of JSON Schema for Python

jsonschema jsonschema is an implementation of JSON Schema for Python. from jsonschema import validate # A sample schema, like what we'd get f

Julian Berman 4k Jan 04, 2023
Displaying plot of death rates from past years in Poland. Data source from these years is in readme

Average-Death-Rate Displaying plot of death rates from past years in Poland The goal collect the data from a CSV file count the ADR (Average Death Rat

Oliwier Szymański 0 Sep 12, 2021
Python script to generate a visualization of various sorting algorithms, image or video.

sorting_algo_visualizer Python script to generate a visualization of various sorting algorithms, image or video.

146 Nov 12, 2022
Profile and test to gain insights into the performance of your beautiful Python code

Profile and test to gain insights into the performance of your beautiful Python code View Demo - Report Bug - Request Feature QuickPotato in a nutshel

Joey Hendricks 138 Dec 06, 2022
ICS-Visualizer is an interactive Industrial Control Systems (ICS) network graph that contains up-to-date ICS metadata

ICS-Visualizer is an interactive Industrial Control Systems (ICS) network graph that contains up-to-date ICS metadata (Name, company, port, user manua

QeeqBox 2 Dec 13, 2021
A way of looking at COVID-19 data that I haven't seen before.

Visualizing Omicron: COVID-19 Deaths vs. Cases Click here for other countries. Data is from Our World in Data/Johns Hopkins University. About this pro

1 Jan 10, 2022
🎨 Python3 binding for `@AntV/G2Plot` Plotting Library .

PyG2Plot 🎨 Python3 binding for @AntV/G2Plot which an interactive and responsive charting library. Based on the grammar of graphics, you can easily ma

hustcc 990 Jan 05, 2023
An easy to use burndown chart generator for GitHub Project Boards.

Burndown Chart for GitHub Projects An easy to use burndown chart generator for GitHub Project Boards. Table of Contents Features Installation Assumpti

Joseph Hale 15 Dec 28, 2022
An open-source plotting library for statistical data.

Lets-Plot Lets-Plot is an open-source plotting library for statistical data. It is implemented using the Kotlin programming language. The design of Le

JetBrains 820 Jan 06, 2023
HW 2: Visualizing interesting datasets

HW 2: Visualizing interesting datasets Check out the project instructions here! Mean Earnings per Hour for Males and Females My first graph uses data

7 Oct 27, 2021
This repository contains a streaming Dataflow pipeline written in Python with Apache Beam, reading data from PubSub.

Sample streaming Dataflow pipeline written in Python This repository contains a streaming Dataflow pipeline written in Python with Apache Beam, readin

Israel Herraiz 9 Mar 18, 2022
High performance, editable, stylable datagrids in jupyter and jupyterlab

An ipywidgets wrapper of regular-table for Jupyter. Examples Two Billion Rows Notebook Click Events Notebook Edit Events Notebook Styling Notebook Pan

J.P. Morgan Chase 75 Dec 15, 2022
GitHub Stats Visualizations : Transparent

GitHub Stats Visualizations : Transparent Generate visualizations of GitHub user and repository statistics using GitHub Actions. ⚠️ Disclaimer The pro

YuanYap 7 Apr 05, 2022
Sparkling Pandas

SparklingPandas SparklingPandas aims to make it easy to use the distributed computing power of PySpark to scale your data analysis with Pandas. Sparkl

366 Oct 27, 2022
Python scripts to manage Chia plots and drive space, providing full reports. Also monitors the number of chia coins you have.

Chia Plot, Drive Manager & Coin Monitor (V0.5 - April 20th, 2021) Multi Server Chia Plot and Drive Management Solution Be sure to ⭐ my repo so you can

338 Nov 25, 2022
This is a Cross-Platform Plot Manager for Chia Plotting that is simple, easy-to-use, and reliable.

Swar's Chia Plot Manager A plot manager for Chia plotting: https://www.chia.net/ Development Version: v0.0.1 This is a cross-platform Chia Plot Manage

Swar Patel 1.3k Dec 13, 2022
Python script for writing text on github contribution chart.

Github Contribution Drawer Python script for writing text on github contribution chart. Requirements Python 3.X Getting Started Create repository Put

Steven 0 May 27, 2022