What’s New in cartopy 0.15¶
Release: | 0.15.0 |
---|---|
Date: | 1st February 2017 |
Features¶
- The
cartopy.crs.Mercator
class now allows alatitude_true_scale
to be specified. - A
tiles
url can now be passed directly to thecartopy.io.img_tiles.GoogleTiles
class. - The
background_img()
method has been added. This allows users to add a background image to the map, from a selection of pre-prepared images held in a directory specified by the CARTOPY_USER_BACKGROUNDS environment variable. - The Web Map Tile Service (WMTS) interface has been extended so that WMTS layers can be added to geoaxes in different projections.
- The
NearsidePerspective
projection has been added. - Optional kwargs can now be supplied to the
add_wmts()
method, which will be passed to the OGC WMTSgettile
method. - New additions to the gallery:
What’s New in cartopy 0.14¶
Release: | 0.14.0 |
---|---|
Date: | 24th March 2016 |
Features¶
Zachary Tessler and Raj Kesavan added the
cartopy.crs.Sinusoidal
projection, allowing MODIS data to be visualised in its native projection. Additionally, a preparedcartopy.crs.Sinusoidal.MODIS
projection has been made available for convenience.Joseph Hogg and Daniel Atton Beckmann added the
cartopy.geodesic.Geodesic
class which wraps the proj.4 geodesic library. This allows users to solve the direct and inverse geodesic problems (calculating distances between points etc). It also contains a convenience function that returns geodetic circles. This is used bycartopy.mpl.geoaxes.GeoAxes.tissot()
which draws Tissot’s indicatrices on the axes.The SRTM3 data source has been changed to the LP DAAC Data Pool. The Data Pool is more consistent, fixing several missing tiles, and the data is void-filled. Consequently, the
cartopy.srtm.fill_gaps()
function has been deprecated as it has no purpose within the STRM context. The SRTM example has also been updated to skip the void-filling step. Additionally, this data source provides SRTM at a higher resolution of 1 arc-second, which may be accessed viacartopy.io.srtm.SRTM1Source
.All downloaders will use secure connections where available. Not every service supports this method, and so those will use non-secured HTTP connections instead. (See PR #736 for full details.)
Cartopy now supports, and is tested against, matplotlib 1.3 and 1.5 as well as numpy 1.7, 1.8 and 1.10.
Daniel Eriksson added a new example to the gallery:
Incompatible changes¶
cartopy.crs.CRS.transform_point()
now issues NaNs when invalid transforms are identified.
Deprecations¶
cartopy.crs.GOOGLE_MERCATOR
has been moved tocartopy.crs.Mercator.GOOGLE
.
What’s new in cartopy 0.13¶
Release: | 0.13.0 |
---|---|
Date: | 30th June 2015 |
Features¶
Andrea Smith fixed the cartopy CRS class such that 3d transforms such as
cartopy.crs.Geocentric
now correctly apply deg2rad and rad2deg. (PR #625)Peter Killick fixed the cartopy.crs.Mercator projection for non-zero central longitudes. (PR #633)
Conversion between matplotlib
matplotlib.path.Path
andshapely.geometry.Geometry
usingcartopy.mpl.patch.path_to_geos()
andcartopy.mpl.patch.geos_to_path()
now handles degenerate point paths.Update of tools/feature_download.py to allow mass download of feature data rather than on-demand downloading.
A new example was added to the gallery:
What’s new in cartopy 0.12¶
Release: | 0.12.0 |
---|---|
Date: | 14th April 2015 |
Features¶
We are very pleased to announce that Elliott Sales de Andrade was added to the cartopy core development team. Elliott has added several new projections in this release, as well as setting up cartopy’s Python 3 testing on TravisCI and generally improving the cartopy codebase.
Installing cartopy became much easier for conda users. A
scitools
channel has been added which makes getting cartopy and all of its dependencies on Linux, OSX and Windows possible with:conda install -c scitools cartopy
Support for Python 3, specifically 3.3 and 3.4, has been added. Some features that depend on OWSLib will not be available as it does not support Python 3.
Two new projections,
AzimuthalEquidistant
andAlbersEqualArea
have been added. See the Cartopy projection list for the full list of projections now available in cartopy.The Web Map Service (WMS) interface has been extended to support on-the-fly reprojection of imagery if the service does not support the projection of the map being drawn. The following example demonstrates the process by adding WMS imagery to an Interrupted Goode Homolosine map - unsurprisingly this WMS service does not provide IGH imagery, so cartopy has had to reproject them from a projection the WMS does support:
Peter Killick added an interface for accessing MapBox tiles using the MapBox Developer API. A MapBox client can be created with,
MapboxTiles
and as with the other imagery from a simple URL based imagery service, it can be added to aGeoAxes
with theadd_image()
method. The following example demonstrates the interface for another source of imagery:Some improvements were made to the geometry transformation algorithm to improve the stability of geometry winding. Several cases of geometries being incorrectly inverted when transformed have now been resolved. (PR #545)
Mark Hedley added the
central_rotated_longitude
keyword tocartopy.crs.RotatedPole
, which is particularly useful for limited area rotated pole models in areas such as New Zealand:A new method has been added to the
GeoAxes
to allow control of the neatline of a map drawn with the matplotlib interface. The method,set_boundary()
, takes amatplotlib Path
object, which means that arbitrary shaped edges can be achieved:A new SRTM3 RasterSource has been implemented allowing interactive pan/zoom of 3 arc-second elevation data from the Shuttle Radar Topography Mission. The SRTM example has also been updated to use the new interface.
New additions to the gallery:
Deprecations¶
- The SRTM module has been re-factored for simplicity and to take advantage
of the new raster source interface. Some
methods have therefore been deprecated and will be removed in future
releases. The function
cartopy.io.srtm.srtm()
has been replaced with thecartopy.io.srtm.SRTM3Source.single_tile()
method. Similarly,cartopy.io.srtm.srtm_composite()
andcartopy.io.srtm.SRTM3_retrieve()
have been replaced with thecartopy.io.srtm.SRTM3Source.combined()
andcartopy.io.srtm.SRTM3Source.srtm_fname()
methods respectively. - The
cartopy.io.RasterSource.fetch_raster
interface has been changed such that a sequence ofcartopy.io.LocatedImage
must be returned, rather than a single image and its associated extent. - The
secant_latitudes
keyword incartopy.crs.LambertConformal
has been deprecated in favour ofstandard_parallels
.
What’s new in cartopy 0.11¶
Release: | 0.11.0 |
---|---|
Date: | 19 June 2014 |
- Richard Hattersley added
epsg()
support for generating a Cartopy projection at run-time based on the EPSG code of a projected coordinate system. This mechanism utilises https://epsg.io/ as a coordinate system resource and employs EPSG request caching using pyepsg - Phil Elson added
WMSRasterSource
which provides interactive pan and zoom OGC web services support for a Web Map Service (WMS) aware axes. This capability may be added to an axes via theadd_wms()
method. Generic interactive slippy map panning and zooming capability is managed through the newSlippyImageArtist
and use of theadd_raster()
method. WMTSRasterSource
was added by Richard Hattersley to provide interactive pan and zoom OGC web services support for a Web Map Tile Service (WMTS) aware axes, which is available through theadd_wmts()
method. This includes support for the Google Mercator projection and efficient WTMS tile caching. This new capability determines how to match up the available tiles projections with the target projection and chooses the zoom level to best match the pixel density in the rendered image.
- Thomas Lecocq added functionality to
cartopy.io.srtm
allowing intelligent filling of missing elevation data, as well as a function to compute elevation shading for relief style mapping. An example has been added which uses both of these functions to produce a grayscale shaded relief map - Lion Krischer extended the capability of
GoogleTiles
to allow support for street, satellite, terrain and street_only style Google Map tiles. - Nat Wilson’s contribution brought us a major step closer to Python 3 compatibility.
- Support for the
UTM
projection was added by Mark Hedley. - Andrew Dawson has added a new convenience utility function
add_cyclic_point()
to add a cyclic point to an array and optionally to a corresponding 1D coordinate. - Andrew Dawson added formatters for producing longitude/latitude tick labels for rectangular projections. The formatters are customizable and can be used to produce nice tick labels in a variety of styles:
What’s new in cartopy 0.10¶
Release: | 0.10.0 |
---|---|
Date: | 17 January 2014 |
We are very pleased to announce that Andrew Dawson was added to the cartopy core development team. In this release Andrew has single-handedly implemented comprehensive vector transformation and visualisation capabilities, including:
- The ability to transform vector fields between different coordinate
reference systems via the
transform_vectors()
CRS method. GeoAxes.quiver
andGeoAxes.barbs
for arrow and barb plotting. More information is available at Vector plotting.- A regridding function for “regularising” a vector field in the target
coordinate system. See also
cartopy.vector_transform.vector_scalar_to_grid()
. Bothquiver()
andbarbs()
accept theregrid_shape
keyword to trigger this behaviour automatically. GeoAxes.streamplot
adds the ability to draw streamlines in any projection from a vector field in any other projection.
What’s new in cartopy 0.9¶
Release: | 0.9.0 |
---|---|
Date: | 12 September 2013 |
We are very pleased to announce that Bill Little was added to the cartopy core development team. Bill has made some excellent contributions to cartopy, and his presentation at EuroScipy‘13 on “Iris & Cartopy” was voted best talk of the conference.
Other talks and tutorials during this release cycle include Phil Elson’s talk at SciPy‘13 (with video), Thomas Lecocq’s tutorial at EuroSciPy and a forthcoming talk at FOSS4G.
Christoph Gohlke updated cartopy to support Windows 7.
The Plate Carree projection was updated to fully handle arbitrary globe definitions.
Peter Killick updated the Mercator class’ default globe to WGS84. His refactor paved the way for some follow on work to fully implement the Google Spherical Mercator (EPSG:3857) projection.
The TransverseMercator class saw a tidy up to include several common arguments (pull request)
Bill Little added the Geostationary projection to allow geolocation of satellite imagery.
Byron Blay added the
Lambert conformal conic projection
.
What’s new in cartopy 0.8¶
Release: | 0.8.0 |
---|---|
Date: | 3 June 2013 |
- Bill Little added support for the OSNI projection and enhanced the image nest capability. (PR #263)
cartopy.io.img_nest.Img
has been extended to include acartopy.io.img_nest.Img.from_world_file()
static method for easier loading of georeferenced images.- Phil Elson added a major performance improvement when plotting data from PlateCarree onto a PlateCarree map. (PR #260)
- Byron Blay and Richard Hattersley added a
cartopy.crs.Globe
class to encapsulate ellipsoid and optionally datum information for CRSs. Globe handling in many projections, including Stereographic, has been added.
What’s new in cartopy 0.7¶
Release: | 0.7.0 |
---|---|
Date: | 21 Mar 2013 |
- Carwyn Pelley added support for 2D arrays of points to
cartopy.crs.CRS.transform_points()
. (PR #192) - Phil Elson added control for the gridlines and tick labels drawn with
cartopy.mpl.geoaxes.GeoAxes.gridlines()
. (PR #238) - Various documentation enhancements have been added. (PR #247, PR #244 PR #240 and PR #242)
This is a quick release which targets two very specific requirements. The goals outlined in the development plan at
v0.6
still remain the primary target for v0.8
and beyond.
What’s new in cartopy 0.6¶
Release: | 0.6.0 |
---|---|
Date: | 19 Feb 2013 |
- Patrick Peglar added the ability to draw ticks for some limited projections
when using the
gridlines()
method on an Axes. - Phil Elson and Carwyn Pelley extended the cartopy documentation to include new tutorials such as Using the cartopy shapereader.
- Ian Edwards added a new example to create a favicon for cartopy.
- Phil Elson added a new example to show polygon analysis and visualisation with Shapely and cartopy.
- Edward Campbell added a new
cartopy.crs.EuroPP
projection for UTM zone 32. - Andrew Dawson added a
central_longitude
keyword for the Stereographic family of projections. - Phil Elson added a
Downloader
class which allows automatic downloading of shapefiles (currently from Natural Earth and GSHHS). The extension requires no user action and can be configured via thecartopy.config
dictionary.
Development plans for cartopy 0.7 and beyond¶
- Improve the projection definitions to support better control over datum definitions and consider adding WKT support (ticket).
- Begin work on vector field support (barbs, quiver, streamlines etc.).
- Continue identifying and implementing performance enhancements (particularly in contour drawing).
- Extend the number of projections for which it is possible to draw tick marks.
What’s new in cartopy 0.5¶
Release: | 0.5.0 |
---|---|
Date: | 7 Dec 2012 |
This document explains the new/changed features of cartopy in version 0.5.
Release 0.5 of cartopy continues the work to expand the feature-set of cartopy to encompass common operations, and provide performance improvements.
Cartopy 0.5 features¶
A summary of the main features added with version 0.5:
- An improved feature API to support future expansion and sophistication, and a wider range of pre-defined Natural Earth datasets.
Incompatible changes¶
None
Deprecations¶
- The method
Axes.natural_earth_shp()
has been replaced by the methodAxes.add_feature()
and thecartopy.feature
module.
Feature API¶
A new features api is now available, see Using the cartopy shapereader.
import cartopy
import matplotlib.pyplot as plt
def main():
ax = plt.axes(projection=cartopy.crs.PlateCarree())
ax.add_feature(cartopy.feature.LAND)
ax.add_feature(cartopy.feature.OCEAN)
ax.add_feature(cartopy.feature.COASTLINE)
ax.add_feature(cartopy.feature.BORDERS, linestyle=':')
ax.add_feature(cartopy.feature.LAKES, alpha=0.5)
ax.add_feature(cartopy.feature.RIVERS)
ax.set_extent([-20, 60, -40, 40])
plt.show()
if __name__ == '__main__':
main()