File: whats_new.rst

package info (click to toggle)
python-cartopy 0.17.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 12,320 kB
  • sloc: python: 14,779; cpp: 545; makefile: 157
file content (819 lines) | stat: -rw-r--r-- 30,324 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
What's New in cartopy 0.17
==========================

:Release: 0.17.0
:Date: 16th Nov 2018

For a full list of included Pull Requests and closed Issues, please see the
`0.17 milestone <https://github.com/SciTools/cartopy/milestone/23>`_.

Features
--------
* The :class:`cartopy.feature.NaturalEarthFeature` class now allows a
  :class:`cartopy.feature.AdaptiveScaler` object to be passed as the ``scale``
  argument. This will automatically choose the appropriate feature scale from
  the GeoAxes extent. This can also be used interactively while panning and
  zooming in a figure. :data:`cartopy.feature.NaturalEarthFeature.scale` is
  now read-only. (:pull:`1102`, :pull:`983`)

* Proj version 5.x is now supported in Cartopy, thanks to hard work by
  Elliott Sales de Andrade. As part of making this version work, the inner
  workings and boundaries of many projections were improved.
  (:pull:`1124`, :pull:`1148`) Elliott also improved support for warped
  rectangular projections (:pull:`1180`) as well as added support for the
  Eckert family of projections (:pull:`1168`) and Equal Earth projection.
  (:pull:`1182`)

    .. plot::
       :width: 400pt

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

        eq_earth = ccrs.EqualEarth()
        fig = plt.figure(figsize=(10, 5))
        ax = plt.axes(projection=eq_earth)
        ax.set_global()
        ax.gridlines()
        ax.stock_img()
        ax.coastlines()
        plt.show()

* Greg Lucas contributed functionality to plot day/night across the globe,
  which was turned into a map feature by Phil Elson. The shading can be added
  to a map with :data:`cartopy.feature.nightshade.Nightshade(datetime)`. For
  more information, see the :ref:`sphx_glr_gallery_nightshade.py` example.
  (:pull:`1135`, :pull:`1181`)

.. figure:: _images/sphx_glr_nightshade_001.png
   :target: gallery/nightshade.html
   :align: center

* Elliott Sales de Andrade added optional support for the use of
  `pykdtree <https://github.com/storpipfugl/pykdtree>`_
  when performing image transformations. This module has been demonstrated to
  be twice as fast as the old code for most of the Cartopy examples, with one
  example (geostationary) having a 95% reduction in run time. (:pull:`1150`)

* Greg Lucas added a Fiona-based shapefile reader. If
  `Fiona <https://github.com/Toblerity/Fiona>`_ is installed on
  a user's system, this will now be the default shapefile reader, adding
  significant speed improvements. (:pull:`1000`)

* Phil Elson added the ability to control the appearance of Shapely geometries
  using a function. :func:`cartopy.mpl.geoaxes.GeoAxes.add_geometries` gained
  a ``styler`` argument that takes a function that given a geometry, returns a
  dictionary of style keyword arguments. The
  :ref:`sphx_glr_gallery_hurricane_katrina.py`
  example has been updated to use this. (:pull:`1019`)

* Kevin Donkers, with help from Phil Elson and Peter Killick, improved the
  interactivity of panning and zooming images by adding a raster
  image cache. (:pull:`1192`, :pull:`1195`, :pull:`1197`)

* Peter Killick and Phil Elson improved the use of Cartopy in Jupyter notebook
  environments by adding an HTML representation for projections. These
  render vector images of the coastlines using a given
  projection to enable a quick preview. (:pull:`951`, :pull:`1196`)

* Fixes were added by Elliott Sales de Andrade to support the matplotlib 3.x
  series. (:pull:`1130`)

* Ryan May fixed up the `.Geostationary` and `.NearsidePerspective` projections
  as well as added additional options to the Mercator projection.
  (:pull:`1189`, :pull:`1043`)

* Andrey Kiselev contributed support for the Equidistant Conic projection.
  (:pull:`1022`)

    .. plot::
       :width: 400pt

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

        eq_conic = ccrs.EquidistantConic()
        fig = plt.figure(figsize=(10, 5))
        ax = plt.axes(projection=eq_conic)
        ax.set_global()
        ax.gridlines()
        ax.stock_img()
        ax.coastlines()
        plt.show()

* Peter Killick updated and improved the interface to Mapbox image tiles.
  (:pull:`1170`)

* Manuel Garrido and Phil Elson collaborated to add support for more themes
  for the Stamen map tile set. (:pull:`1013`, :pull:`1188`)

* Support for WMTS sources was made more robust by Alex Crosby.
  (:pull:`1052`, :pull:`1053`)

* Passing a ``color`` argument to
  :func:`cartopy.mpl.geoaxes.GeoAxes.add_feature`
  now overrides default feature ``edgecolor`` and ``facecolor`` thanks to
  a change by Elliott Sales de Andrade. (:pull:`1029`)

* Phil Elson added :func:`cartopy.geodesic.Geodesic.geometry_length` to
  calculated the length in physical meters of any Shapely geometry.
  (:pull:`1096`)

* Elliott Sales de Andrade improved the interpolation code by normalizing
  values, reducing issues due to precision. (:pull:`1042`)

* Ryan May fixed a few corner cases in the plotting and transform code.
  (:pull:`1062`, :pull:`1090`)

* A ``pyproject.toml`` file has been added to Cartopy by
  Elliott Sales de Andrade to make it easier to build Cartopy. Newer
  versions of pip should now automatically install Cython and NumPy before
  trying to build Cartopy. (:pull:`1132`)

* Andrew Dawson fixed a crash when calculating the boundary for the
  Lambert Azimuthal Equal Area projection. (:pull:`1100`)

* Elliott Sales de Andrade and Andrew Dawson removed the use of deprecated
  functionality in NumPy. (:pull:`1101`, :pull:`1122`)

* Kevin Donkers added all 60 UTM zones to the images in the supported
  projection documentation. (:pull:`1103`)

* Broken URLs to the SRTM imagery were corrected by Elliott Sales de Andrade.
  (:pull:`1143`)

Deprecations
------------
* :func:`cartopy.mpl.clip_path.clip_path` has been deprecated. It is a simple
  wrapper for Matplotlib's path clipping, so use that instead. You can replace
  ``clip_path(subject, clip_bbox)`` by ``subject.clip_to_bbox(clip_bbox)``.

* :class:`cartopy.io.img_tiles.StamenTerrain` has been deprecated. Use
  ``Stamen('terrain-background')`` instead.

* In CartoPy 0.18, the default value for the ``origin`` argument to
  :func:`cartopy.mpl.geoaxes.GeoAxes.imshow` will change from ``'lower'``
  to ``'upper'`` to match the default in matplotlib.

Incompatible Changes
--------------------
* Support for matplotlib < 1.5.1 and NumPy < 1.10 has been removed.

--------



What's New in cartopy 0.16
==========================

:Release: 0.16.0
:Date: 21st Feb 2018

Features
--------

* We are very pleased to announce that Ryan May has been added to the cartopy
  core development team. Ryan (@dopplershift) brings a wealth of experience,
  and has already made significant contributions to the Matplotlib interface,
  extended projections, and helped modernise the development infrastructure.

* The :class:`~cartopy.crs.Gnomonic` projection was brought up-to-date to
  include the ``central_longitude`` argument. (:pull:`855`)

* Ryan May improved the formulation of the boundary ellipse for the
  :class:`~cartopy.crs.Geostationary` projection and added the
  ``sweep_angle_axis`` keyword argument. (:pull:`890`, :pull:`897`)

* Elliott Sales de Andrade made a number of micro-optimisations to the
  Matplotlib interface, fixed a number of documentation issues with
  Python 3 and added Matplotlib 2.0 & 2.1 compatibility. (:pull:`886`,
  :pull:`901`, :pull:`780`, :pull:`773`, :pull:`977`)

* Tick padding was added to the gridliner.
  :data:`cartopy.mpl.gridliner.Gridliner.xpadding` and
  :data:`~cartopy.mpl.gridliner.Gridliner.ypadding` relate. (:pull:`783`)

* Ryan May added the :meth:`~cartopy.feature.NaturalEarthFeature.with_scale`
  method to the NaturalEarthFeature class.
  For example, it is now possible to access higher resolution land features
  with ``cartopy.feature.LAND.with_scale('50m')``. In addition to this,
  :data:`cartopy.feature.STATES` was added to easily access administrative
  area boundaries that were previously only accessible by manually
  constructing :class:`~cartopy.feature.NaturalEarthFeature` instances
  (as is done in the :ref:`sphx_glr_gallery_feature_creation.py` example).
  (:pull:`898`)

* Daryl Herzmann and Robert Redl improved cartopy's internal conversion
  between Shapely objects and Matplotlib Paths. (:pull:`885` & :pull:`1021`)

* Åsmund Steen Skjæveland fixed :meth:`cartopy.mpl.geoaxes.GeoAxes.tissot`
  to use the documented units of kilometres, where before it had been using
  metres. (:pull:`904`)

* Andrew Dawson wrote a new tutorial for the user guide:
  :ref:`understanding_transform`. (:pull:`914`)

.. figure:: _images/understanding_transform-6.png
   :target: tutorials/understanding_transform.html
   :align: center

* Daniel Kirkham and Daryl Herzmann made significant improvements to the
  stability of polygon transformation. The changes reduce the frequency
  of messages such as
  ``Unidentified problem with geometry, linestring being re-added`` and
  ``Self-intersection at or near point <X> <Y>`` occurring.
  (:pull:`974` and :pull:`903`)

* Chris Holdgraf and Corinne Bosley worked collaboratively to bring
  `sphinx-gallery <https://github.com/sphinx-gallery/sphinx-gallery>`_ to the
  cartopy docs. (:pull:`969`)

* Ray Bell neatened up many of the examples to explicitly pass the coordinate
  system when calling :meth:`~cartopy.mpl.geoaxes.GeoAxes.set_extent`.
  (:pull:`975`)

* Ryan May changed the default zorder of LAND and OCEAN to -1, thus fixing
  an issue with LAND/OCEAN appearing above some data elements such as
  vectors. (:pull:`916`)

* Kevin Donkers added the 60 UTM projections example to the gallery
  in :pull:`954`:

.. figure:: gallery/images/sphx_glr_utm_all_zones_001.png
   :target: gallery/utm_all_zones.html
   :align: center

* Andrey Kiselev added support for reading shapes with a third (Z) dimension.
  (:pull:`958`)

* Corinne Bosley standardised the docstring format for improved readability
  and visual consistency. (:pull:`987`)

* Cartopy now no longer enables :func:`shapely.speedups` at cartopy import
  time. (:pull:`990`)

* Mahé Perrette and Ryan May collaborated to improve the
  :class:`~cartopy.crs.Stereographic` projection. (:pull:`929`)

-----------



What's New in cartopy 0.15
==========================

:Release: 0.15.0
:Date: 1st February 2017

Features
--------

* The :class:`cartopy.crs.Mercator` class now allows a ``latitude_true_scale``
  to be specified.

* A ``tiles`` url can now be passed directly to the
  :class:`cartopy.io.img_tiles.GoogleTiles` class.

* The :meth:`~cartopy.mpl.geoaxes.GeoAxes.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 :class:`~cartopy.crs.NearsidePerspective` projection has been added.

* Optional kwargs can now be supplied to the
  :meth:`~cartopy.mpl.geoaxes.GeoAxes.add_wmts` method, which will be passed to
  the OGC WMTS ``gettile`` method.

* New additions to the gallery:

.. figure:: gallery/images/sphx_glr_axes_grid_basic_001.png
   :target: gallery/axes_grid_basic.html
   :align: center
   :scale: 70

.. figure:: gallery/images/sphx_glr_reprojected_wmts_001.png
   :target: gallery/reprojected_wmts.html
   :align: center
   :scale: 70

.. figure:: gallery/images/sphx_glr_wmts_time_001.png
   :target: gallery/wmts_time.html
   :align: center
   :scale: 70

-----------


What's New in cartopy 0.14
==========================

:Release: 0.14.0
:Date: 24th March 2016

Features
--------

* Zachary Tessler and Raj Kesavan added the :class:`cartopy.crs.Sinusoidal` projection,
  allowing MODIS data to be visualised in its native projection. Additionally, a
  prepared :data:`cartopy.crs.Sinusoidal.MODIS` projection has been made available for
  convenience.

* Joseph Hogg and Daniel Atton Beckmann added the :class:`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 by
  :meth:`cartopy.mpl.geoaxes.GeoAxes.tissot` which draws Tissot's indicatrices on the axes.

  .. figure:: gallery/images/sphx_glr_tissot_001.png
     :target: gallery/tissot.html
     :align: center
     :scale: 70

* The SRTM3 data source has been changed to the `LP DAAC Data Pool
  <https://lpdaac.usgs.gov/data_access/data_pool>`_. The Data Pool is more
  consistent, fixing several missing tiles, and the data is void-filled.
  Consequently, the :func:`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 via :class:`cartopy.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 :pull:`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:

  .. figure:: gallery/images/sphx_glr_aurora_forecast_001.png
     :target: gallery/aurora_forecast.html
     :align: center
     :scale: 70


Incompatible changes
--------------------
* :meth:`cartopy.crs.CRS.transform_point` now issues NaNs when invalid transforms are identified.


Deprecations
------------
* :data:`cartopy.crs.GOOGLE_MERCATOR` has been moved to :data:`cartopy.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 :class:`cartopy.crs.Geocentric`
  now correctly apply deg2rad and rad2deg. (:pull:`625`)

* Peter Killick fixed the cartopy.crs.Mercator projection for non-zero central longitudes. (:pull:`633`)

* Conversion between Matplotlib :class:`matplotlib.path.Path` and
  :class:`shapely.geometry.Geometry <Shapely geometry>` using
  :func:`cartopy.mpl.patch.path_to_geos` and :func:`cartopy.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:

  .. figure:: gallery/images/sphx_glr_eccentric_ellipse_001.png
     :target: gallery/eccentric_ellipse.html
     :align: center
     :scale: 70


-----------



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, :class:`~cartopy.crs.AzimuthalEquidistant` and
  :class:`~cartopy.crs.AlbersEqualArea` have been added. See the :ref:`cartopy_projections`
  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:

  .. figure:: gallery/images/sphx_glr_wms_001.png
     :target: gallery/wms.html
     :align: center
     :scale: 70

* Peter Killick added an interface for accessing MapBox tiles using the MapBox
  Developer API. A MapBox client can be created with,
  :class:`~cartopy.io.img_tiles.MapboxTiles` and as with the other imagery from a simple URL
  based imagery service, it can be added to a :class:`~cartopy.mpl.geoaxes.GeoAxes` with the
  :meth:`~cartopy.mpl.geoaxes.GeoAxes.add_image` method. The following example demonstrates the
  interface for another source of imagery:

  .. figure:: gallery/images/sphx_glr_image_tiles_001.png
     :target: gallery/image_tiles.html
     :align: center
     :scale: 70

* 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. (:pull:`545`)

* Mark Hedley added the ``central_rotated_longitude`` keyword to
  :class:`cartopy.crs.RotatedPole`, which is particularly useful for limited area
  rotated pole models in areas such as New Zealand:

    .. plot::
       :width: 200pt

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

        rpole = ccrs.RotatedPole(pole_longitude=171.77,
                                 pole_latitude=49.55,
                                 central_rotated_longitude=180)
        fig = plt.figure(figsize=(10, 5))
        ax = plt.axes(projection=rpole)
        ax.set_global()
        ax.gridlines()
        ax.stock_img()
        ax.coastlines()
        plt.show()

* A new method has been added to the :class:`~cartopy.mpl.geoaxes.GeoAxes` to
  allow control of the neatline of a map drawn with the Matplotlib interface.
  The method, :meth:`~cartopy.mpl.geoaxes.GeoAxes.set_boundary`, takes a
  :class:`matplotlib Path<matplotlib.path.Path>` object, which means that
  arbitrary shaped edges can be achieved:

  .. figure:: gallery/images/sphx_glr_star_shaped_boundary_001.png
     :target: gallery/star_shaped_boundary.html
     :align: center
     :scale: 70

* 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:


  .. figure:: gallery/images/sphx_glr_un_flag_001.png
     :target: gallery/un_flag.html
     :align: center
     :scale: 70

  .. figure:: gallery/images/sphx_glr_always_circular_stereo_001.png
     :target: gallery/always_circular_stereo.html
     :align: center
     :scale: 70

  .. figure:: gallery/images/sphx_glr_tube_stations_001.png
     :target: gallery/tube_stations.html
     :align: center
     :scale: 70

  .. figure:: gallery/images/sphx_glr_wms_001.png
     :target: gallery/wms.html
     :align: center
     :scale: 70

  .. figure:: gallery/images/sphx_glr_image_tiles_001.png
     :target: gallery/image_tiles.html
     :align: center
     :scale: 70


Deprecations
------------
* The SRTM module has been re-factored for simplicity and to take advantage
  of the new :ref:`raster source interface <raster-source-interface>`. Some
  methods have therefore been deprecated and will be removed in future
  releases. The function :func:`cartopy.io.srtm.srtm` has been replaced with
  the :meth:`cartopy.io.srtm.SRTM3Source.single_tile` method. Similarly,
  :func:`cartopy.io.srtm.srtm_composite` and
  :func:`cartopy.io.srtm.SRTM3_retrieve` have been replaced with the
  :meth:`cartopy.io.srtm.SRTM3Source.combined` and
  :meth:`cartopy.io.srtm.SRTM3Source.srtm_fname` methods respectively.

* The :class:`cartopy.io.RasterSource.fetch_raster` interface has been
  changed such that a sequence of :class:`cartopy.io.LocatedImage` must be
  returned, rather than a single image and its associated extent.

* The ``secant_latitudes`` keyword in :class:`cartopy.crs.LambertConformal` has
  been deprecated in favour of ``standard_parallels``.


-----------



What's new in cartopy 0.11
==========================

:Release: 0.11.0
:Date: 19 June 2014


* Richard Hattersley added :func:`~cartopy.crs.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 <https://github.com/rhattersley/pyepsg>`_

* Phil Elson added :class:`~cartopy.io.ogc_clients.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 the
  :meth:`~cartopy.mpl.geoaxes.GeoAxes.add_wms` method. Generic interactive
  slippy map panning and zooming capability is managed through the new
  :class:`~cartopy.mpl.slippy_image_artist.SlippyImageArtist` and use of the
  :meth:`~cartopy.mpl.geoaxes.GeoAxes.add_raster` method.

* :class:`~cartopy.io.ogc_clients.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 the
  :meth:`~cartopy.mpl.geoaxes.GeoAxes.add_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.

  .. figure:: gallery/images/sphx_glr_wmts_001.png
     :target: gallery/wmts.html
     :align: center
     :scale: 70

* Thomas Lecocq added functionality to :mod:`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
  :class:`~cartopy.io.img_tiles.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 :class:`~cartopy.crs.UTM` projection was added by Mark Hedley.

* Andrew Dawson has added a new convenience utility function
  :func:`~cartopy.util.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:

  .. figure:: gallery/images/sphx_glr_tick_labels_001.png
     :target: gallery/tick_labels.html
     :align: center
     :scale: 70


-----------


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 :meth:`~cartopy.crs.CRS.transform_vectors`
  CRS method.

* :meth:`GeoAxes.quiver <cartopy.mpl.geoaxes.GeoAxes.quiver>` and
  :meth:`GeoAxes.barbs <cartopy.mpl.geoaxes.GeoAxes.barbs>` for arrow and
  barb plotting. More information is available at :ref:`vector_plotting`.

* A regridding function for "regularising" a vector field in the target
  coordinate system. See also
  :func:`cartopy.vector_transform.vector_scalar_to_grid`. Both
  :meth:`~cartopy.mpl.geoaxes.GeoAxes.quiver` and
  :meth:`~cartopy.mpl.geoaxes.GeoAxes.barbs` accept the ``regrid_shape``
  keyword to trigger this behaviour automatically.

* :meth:`GeoAxes.streamplot <cartopy.mpl.geoaxes.GeoAxes.streamplot>` adds
  the ability to draw streamlines in any projection from a vector field in
  any other projection.

  .. figure:: gallery/images/sphx_glr_barbs_001.png
     :target: gallery/barbs.html
     :align: center
     :scale: 70

-----------


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" <https://www.euroscipy.org/2013/schedule/presentation/35/>`_
  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) <https://conference.scipy.org/scipy2013/presentation_detail.php?id=132>`_,
  `Thomas Lecocq's tutorial at EuroSciPy
  <https://www.euroscipy.org/2013/schedule/presentation/27/>`_
  and a forthcoming `talk at FOSS4G <http://2013.foss4g.org/conf/programme/presentations/29/>`_.
* 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.


    .. figure:: gallery/images/sphx_glr_eyja_volcano_001.png
       :target: gallery/eyja_volcano.html
       :align: center
       :scale: 70

* The TransverseMercator class saw a tidy up to include several common arguments (:pull:`pull request <309>`)
* Bill Little added the Geostationary projection to allow geolocation of satellite imagery.

  .. figure:: gallery/images/sphx_glr_geostationary_001.png
     :target: gallery/geostationary.html
     :align: center
     :scale: 70

* Byron Blay added the :class:`Lambert conformal conic projection <cartopy.crs.LambertConformal>`.


-----------



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. (:pull:`263`)
* :class:`cartopy.io.img_nest.Img` has been extended to include a
  :func:`cartopy.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. (:pull:`260`)
* Byron Blay and Richard Hattersley added a :class:`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 :meth:`cartopy.crs.CRS.transform_points`. (:pull:`192`)
* Phil Elson added control for the gridlines and tick labels drawn with
  :meth:`cartopy.mpl.geoaxes.GeoAxes.gridlines`. (:pull:`238`)
* Various documentation enhancements have been added. (:pull:`247`, :pull:`244` :pull:`240` and :pull:`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 :py:func:`~cartopy.mpl.geoaxes.GeoAxes.gridlines` method on an Axes.

* Phil Elson and Carwyn Pelley extended the cartopy documentation to include
  new tutorials such as :ref:`using_the_shapereader`.

* Ian Edwards :doc:`added a new example <gallery/favicon>` to create a favicon for cartopy.

* Phil Elson :doc:`added a new example <gallery/hurricane_katrina>` to show polygon analysis
  and visualisation with Shapely and cartopy.

* Edward Campbell added a new :py:class:`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 :py:class:`~cartopy.io.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 the :py:data:`cartopy.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 (:issue:`ticket <153>`).

* 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 :meth:`Axes.natural_earth_shp()` has been replaced by the
  method :meth:`Axes.add_feature()` and the :mod:`cartopy.feature`
  module.


Feature API
-----------

A new features api is now available, see :doc:`tutorials/using_the_shapereader`.

.. figure:: gallery/images/sphx_glr_features_001.png
   :target: gallery/features.html
   :align: center
   :scale: 70