Experimental: optional use of PyGEOS to speed up spatial operations (#1155).
PyGEOS is a faster alternative for Shapely (being contributed back to a
future version of Shapely), and is used in element-wise spatial
operations and for spatial index in e.g. sjoin
(#1343, #1401, #1421, #1427, #1428). See the installation docs for more info and how to enable it.
New features and improvements:
GeoDataFrame.to_postgis()
method to write to PostGIS database (#1248).GeoDataFrame.to_file
(#1229).ignore_geometry
keyword in read_file
to only read the attribute data. If set to True, a pandas DataFrame without geometry is returned (#1383).geopandas.read_file
now supports reading from file-like objects (#1329).GeoDataFrame.to_file
now supports specifying the CRS to write to the file (#802). By default it still uses the CRS of the GeoDataFrame.chunksize
keyword in geopandas.read_postgis
to read a query in chunks (#1123).gdf["other_geom_column"]
) gives a GeoSeries (#1336).gdf.crs
attribute continues to returns the CRS of the "active" geometry column.
The CRS of other geometry columns can be accessed from the column
itself (eg gdf["other_geom_column"].crs
) (#1339).set_crs()
method on GeoDataFrame/GeoSeries to set the CRS of naive geometries (#747).column=
keyword of the GeoDataFrame plot()
, we now honor all categories and its order (#1483). In addition, a new categories
keyword allows to specify all categories and their order otherwise (#1173).scheme=
), the legend_kwds
accept two new keywords to control the formatting of the legend: fmt
with a format string for the bin edges (#1253), and labels
to pass fully custom class labels (#1302).covers()
and covered_by()
methods on GeoSeries/GeoDataframe for the equivalent spatial predicates (#1460, #1462).Deprecations:
set_crs
method to override an existing CRS. See the docs.geopandas.plotting
module are deprecated for public usage (#656).geopandas.io
functions are deprecated, use the top-level read_file
and to_file
instead (#1407).&
, |
, ^
, -
) are deprecated, use the intersection()
, union()
, symmetric_difference()
, difference()
methods instead (#1255).sindex
for empty dataframe will in the future return an empty spatial index instead of None
(#1438).objects
keyword in the intersection
method of the spatial index returned by the sindex
attribute is deprecated and will be removed in the future (#1440).Bug fixes:
total_bounds()
method to ignore missing and empty geometries (#1312).geopandas.clip
when masking with non-overlapping area resulting in an empty GeoDataFrame (#1309, #1365).geopandas.sjoin
when joining on an empty geometry column (#1318).pandas.concat
preserves CRS when concatenating GeoSeries objects (#1340), preserve the CRS in geopandas.clip
(#1362) and in GeoDataFrame.astype
(#1366).GeoDataFrame.explode()
when 'level_1' is one of the column names (#1445).GeoSeries.equals()
(#1451).And we now have a Code of Conduct!
GeoPandas 0.8.0 is the last release to support Python 3.5. The next release
will require Python 3.6, pandas 0.24, numpy 1.15 and shapely 1.6 or higher.
Acknowledgments
Thanks to everyone who contributed to this release!
A total of 28 people contributed patches to this release. People with a
"+" by their names contributed a patch for the first time.