We are pleased to announce a new release of GeoPandas!
Highlights: a revamped documentation site (http://geopandas. readthedocs.io/en/stable/), read_file automatically recognizes zip files (without prepending zip:// to the path), access to pandas' plotting methods directly from the GeoDataFrame, and lots of other new features, enhancements, and bug fixes. See below for more detailed notes. Thanks to all contributors for making this possible!
GeoPandas can be installed with conda from the conda-forge channel (conda install -c conda-forge geopandas) or with pip assuming the dependencies are available for your platform or are already installed (pip install geopandas ).
Please report any issues, or request new features via our GitHub repository: https://github.com/geopandas/geopandas/issues
Documentation can be found here: http://geopandas.readthedocs.io/en/stable/
GeoPandas 0.9.0 features a long list of new features, enhancements and bug fixes, see the full list below. In addition, there are many *documentation improvements* and a restyled and restructured website with a new logo (#1564 https://github.com/geopandas/geopandas/pull/1564, #1579 https://github.com/geopandas/geopandas/pull/1579, #1617 https://github.com/geopandas/geopandas/pull/1617, #1668 https://github.com/geopandas/geopandas/pull/1668, #1731 https://github.com/geopandas/geopandas/pull/1731, #1750 https://github.com/geopandas/geopandas/pull/1750, #1757 https://github.com/geopandas/geopandas/pull/1757, #1759 https://github.com/geopandas/geopandas/pull/1759).
*New features and improvements:*
- The geopandas.read_file function now accepts more general file-like objects (e.g. fsspec open file objects). It will now also automatically recognize zipped files (#1535 https://github.com/geopandas/geopandas/pull/1535). - The GeoDataFrame.plot() method now provides access to the pandas plotting functionality for the non-geometry columns, either using the kind keyword or the accessor method (e.g. gdf.plot(kind="bar") or gdf.plot.bar()) (#1465 https://github.com/geopandas/geopandas/pull/1465 ). - New from_wkt(), from_wkb(), to_wkt(), to_wkb() methods for GeoSeries to construct a GeoSeries from geometries in WKT or WKB representation, or to convert a GeoSeries to a pandas Seriew with WKT or WKB values (#1710 https://github.com/geopandas/geopandas/pull/1710). - New GeoSeries.z attribute to access the z-coordinates of Point geometries (similar to the existing .x and .y attributes) (#1773 https://github.com/geopandas/geopandas/pull/1773). - The to_crs() method now handles missing values (#1618 https://github.com/geopandas/geopandas/pull/1618). - Support for pandas' new .attrs functionality (#1658 https://github.com/geopandas/geopandas/pull/1658). - The dissolve() method now allows dissolving by no column (by=None) to create a union of all geometries (single-row GeoDataFrame) (#1568 https://github.com/geopandas/geopandas/pull/1568). - New estimate_utm_crs() method on GeoSeries/GeoDataFrame to determine the UTM CRS based on the bounds (#1646 https://github.com/geopandas/geopandas/pull/1646). - GeoDataFrame.from_dict() now accepts geometry and crs keywords (#1619 https://github.com/geopandas/geopandas/pull/1619). - GeoDataFrame.to_postgis() and geopandas.read_postgis() now supports both sqlalchemy engine and connection objects (#1638 https://github.com/geopandas/geopandas/pull/1638). - The GeoDataFrame.explode() method now allows exploding based on a non-geometry column, using the pandas implementation (#1720 https://github.com/geopandas/geopandas/pull/1720). - Performance improvement in GeoDataFrame/GeoSeries.explode() when using the PyGEOS backend (#1693 https://github.com/geopandas/geopandas/pull/1693). - The binary operation and predicate methods (eg intersection(), intersects()) have a new align keyword which allows optionally not aligning on the index before performing the operation with align=False ( #1668 https://github.com/geopandas/geopandas/pull/1668). - The GeoDataFrame.dissolve() method now supports all relevant keywords of groupby(), i.e. the level, sort, observed and dropna keywords (#1845 https://github.com/geopandas/geopandas/pull/1845). - The geopandas.overlay() function now accepts make_valid=False to skip the step to ensure the input geometries are valid using buffer(0) (#1802 https://github.com/geopandas/geopandas/pull/1802). - The GeoDataFrame.to_json() method gained a drop_id keyword to optionally not write the GeoDataFrame's index as the "id" field in the resulting JSON (#1637 https://github.com/geopandas/geopandas/pull/1637 ). - A new aspect keyword in the plotting methods to optionally allow retaining the original aspect (#1512 https://github.com/geopandas/geopandas/pull/1512) - A new interval keyword in the legend_kwds group of the plot() method to control the appearance of the legend labels when using a classification scheme (#1605 https://github.com/geopandas/geopandas/pull/1605). - The spatial index of a GeoSeries (accessed with the sindex attribute) is now stored on the underlying array. This ensures that the spatial index is preserved in more operations where possible, and that multiple geometry columns of a GeoDataFrame can each have a spatial index (#1444 https://github.com/geopandas/geopandas/pull/1444). - Addition of a has_sindex attribute on the GeoSeries/GeoDataFrame to check if a spatial index has already been initialized (#1627 https://github.com/geopandas/geopandas/pull/1627). - The geopandas.testing.assert_geoseries_equal() and assert_geodataframe_equal() testing utilities now have a normalize keyword (False by default) to normalize geometries before comparing for equality (#1826 https://github.com/geopandas/geopandas/pull/1826). Those functions now also give a more informative error message when failing (#1808 https://github.com/geopandas/geopandas/pull/1808).
*Deprecations and compatibility notes:*
- The is_ring attribute currently returns True for Polygons. In the future, this will be False (#1631 https://github.com/geopandas/geopandas/pull/1631). In addition, start to check it for LineStrings and LinearRings (instead of always returning False). - The deprecated objects keyword in the intersection() method of the GeoDataFrame/GeoSeries.sindex spatial index object has been removed ( #1444 https://github.com/geopandas/geopandas/pull/1444).
- Fix regression in the plot() method raising an error with empty geometries (#1702 https://github.com/geopandas/geopandas/pull/1702, #1828 https://github.com/geopandas/geopandas/pull/1828). - Fix geopandas.overlay() to preserve geometries of the correct type which are nested within a GeometryCollection as a result of the overlay operation (#1582 https://github.com/geopandas/geopandas/pull/1582). In addition, a warning will now be raised if geometries of different type are dropped from the result (#1554 https://github.com/geopandas/geopandas/pull/1554). - Fix the repr of an empty GeoSeries to not show spurious warnings (#1673 https://github.com/geopandas/geopandas/pull/1673). - Fix the .crs for empty GeoDataFrames (#1560 https://github.com/geopandas/geopandas/pull/1560). - Fix geopandas.clip to preserve the correct geometry column name (#1566 https://github.com/geopandas/geopandas/pull/1566). - Fix bug in plot() method when using legend_kwds with multiple subplots (#1583 https://github.com/geopandas/geopandas/pull/1583) - Fix spurious warning with missing_kwds keyword of the plot() method when there are no areas with missing data (#1600 https://github.com/geopandas/geopandas/pull/1600). - Fix the plot() method to correctly align values passed to the column keyword as a pandas Series (#1670 https://github.com/geopandas/geopandas/pull/1670). - Fix bug in plotting MultiPoints when passing values to determine the color (#1694 https://github.com/geopandas/geopandas/pull/1694) - The rename_geometry() method now raises a more informative error message when a duplicate column name is used (#1602 https://github.com/geopandas/geopandas/pull/1602). - Fix explode() method to preserve the CRS (#1655 https://github.com/geopandas/geopandas/pull/1655) - Fix the GeoSeries.apply() method to again accept the convert_dtype keyword to be consistent with pandas (#1636 https://github.com/geopandas/geopandas/pull/1636). - Fix GeoDataFrame.apply() to preserve the CRS when possible (#1848 https://github.com/geopandas/geopandas/pull/1848). - Fix bug in containment test as geom in geoseries (#1753 https://github.com/geopandas/geopandas/pull/1753). - The shift() method of a GeoSeries/GeoDataFrame now preserves the CRS ( #1744 https://github.com/geopandas/geopandas/pull/1744). - The PostGIS IO functionality now quotes table names to ensure it works with case-sensitive names (#1825 https://github.com/geopandas/geopandas/pull/1825). - Fix the GeoSeries constructor without passing data but only an index ( #1798 https://github.com/geopandas/geopandas/pull/1798).
*Notes on (optional) dependencies:*
- GeoPandas 0.9.0 dropped support for Python 3.5. Further, the minimum required versions are pandas 0.24, numpy 1.15 and shapely 1.6 and fiona 1.8. - The descartes package is no longer required for plotting polygons. This functionality is now included by default in GeoPandas itself, when matplotlib is available (#1677 https://github.com/geopandas/geopandas/pull/1677). - Fiona is now only imported when used in read_file/to_file. This means you can now force geopandas to install without fiona installed (although it is still a default requirement) (#1775 https://github.com/geopandas/geopandas/pull/1775). - Compatibility with the upcoming Shapely 1.8 (#1659 https://github.com/geopandas/geopandas/pull/1659, #1662 https://github.com/geopandas/geopandas/pull/1662, #1819 https://github.com/geopandas/geopandas/pull/1819).
Thanks to everyone who contributed to this release! A total of 29 people contributed patches to this release. People with a "+" by their names contributed a patch for the first time.
- Adam J. Stewart + - Adrian Garcia Badaracco - Alan D. Snow - Brendan Ward - Charlie + - Dave Rench McCauley + - Flavin + - Giacomo Caria + - Ian Rose - Imanol + - Isaac Boates + - Jacob Hayes + - Jake Clarke + - James McBride - Joris Van den Bossche - Martijn Visser + - Martin Fleischmann - Nick Hand + - Rowan Molony - Sergio Rey - Sönke Schmachtel + - Tim Gates + - WANG Aiyong + - Will Schlitzer + - abonte - bretttully + - donlo - sangarshanan - vangorade +
*-- The GeoPandas developers*