GeoPandas 0.6.0 features a refactor of the internals based on the
new pandas ExtensionArray interface, for better integration with
pandas. Although this change should keep the user interface mostly
stable, there are a few changes summarized below. Further, this release
includes a nice set of other improvements and bug fixes. See the full list below.
Important note! This will be the last release to support Python 2.7 (#1031)
API changes:
.dtype
of a GeoSeries is now a 'geometry'
dtype (and no longer a numpy object
dtype)..values
of a GeoSeries now returns a custom GeometryArray
, and no longer a numpy array. To get back a numpy array of Shapely scalars, you can convert explicitly using np.asarray(..)
.GeoSeries
constructor now raises a warning when passed non-geometry data. Currently the constructor falls back to return a pandas Series
, but in the future this will raise an error (#1085).GeoSeries.isna
now considers only missing values, and if you want to check for empty geometries, you can use GeoSeries.is_empty
(GeoDataFrame.isna
already only looked at missing values).GeoSeries.dropna
now actually drops missing values (before it didn't drop either missing or empty geometries)GeoSeries.fillna
only fills missing values (behaviour unchanged).GeoSeries.align
uses missing values instead of empty geometries by default to fill non-matching index entries.New features and improvements:
GeoSeries.affine_transform
method, equivalent of Shapely's function (#1008).GeoDataFrame.rename_geometry
method to easily rename the active geometry column (#1053).geopandas.show_versions()
function, which can be used to give an overview of the installed libraries in bug reports (#899).legend_kwds
keyword of the plot()
method can now also be used to specify keywords for the color bar (#1102).sjoin()
operation by re-using existing spatial index of the input dataframes, if available (#789).geopandas.options
configuration, with currently a single option to control the display precision of the coordinates (options.display_precision
).
The default is now to show less coordinates (3 for projected and 5 for
geographic coordinates), but the default can be overridden with the
option.Bug fixes:
pysal
instead of mapclassify
if available (#1082).GeoDataFrame.astype()
method now correctly returns a GeoDataFrame
if the geometry column is preserved (#1009).to_crs
method now uses always_xy=True
to ensure correct lon/lat order handling for pyproj>=2.2.0 (#1122).plot()
method in case of "multi" geometries (#1119).norm
in the plot()
method (#1091, #1089).GeoDataFrame.to_file
to preserve VFS file paths (e.g. when a "s3://" path is specified) (#1124).geopandas.sjoin
with empty geometries (#1138).In addition, the minimum required versions of some dependencies have been increased: GeoPandas now requires pandas >=0.23.4 and matplotlib >=2.0.1 (#1002).
Acknowledgments
Thanks to everyone who contributed to this release!
A total of 20 people contributed patches to this release. People with a
"+" by their names contributed a patch for the first time.
--
You received this message because you are subscribed to the Google Groups "PyData" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pydata+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pydata/CALQtMBanwWzFb%3DBSwaa3-VgOndYUMBqfmCRaBXjxV9Gpa%3DS1Eg%40mail.gmail.com.
The main highlight of GeoPandas 0.7.0 is related to Coordinate Reference System (CRS) handling. The .crs
attribute of a GeoSeries and GeoDataFrame no longer stores the CRS information as a proj4 string or dict, but as a pyproj.CRS
object. This gives a better user interface and integrates improvements from
pyproj and PROJ 6, but might also require some changes in your code.
Check the migration guide in the documentation.
Further, this release
includes a nice set of other improvements and bug fixes. See the full list below.
---
Support for Python 2.7 has been dropped. GeoPandas now works with Python >= 3.5.
The important API change of this release is that GeoPandas now requires PROJ > 6 and pyproj > 2.2, and that the .crs
attribute of a GeoSeries and GeoDataFrame no longer stores the CRS information as a proj4 string or dict, but as a pyproj.CRS
object (#1101).
This gives a better user interface and integrates improvements from pyproj and PROJ 6, but might also require some changes in your code. Check the migration guide in the documentation.
Other API changes:
GeoDataFrame.to_file
method will now also write the GeoDataFrame index to the file, if the index is named and/or non-integer. You can use the index=True/False
keyword to overwrite this default inference (#1059).New features and improvements:
geopandas.clip
function to clip a GeoDataFrame to the spatial extent of another shape (#1128).geopandas.overlay
function now works for all geometry types, including points and linestrings in addition to polygons (#1110).plot()
method gained support for missing values (in
the column that determines the colors). By default it doesn't plot the
corresponding geometries, but using the new missing_kwds
argument you can specify how to style those geometries (#1156).plot()
method now also supports plotting GeometryCollection and LinearRing objects (#1225).geopandas.read_file
(#1160).GeoDataFrame.to_file
(#1220).Bug fixes:
GeoSeries.reset_index()
now correctly results in a GeoDataFrame instead of DataFrame (#1252).geopandas.sjoin
function to handle MultiIndex correctly (#1159).geopandas.sjoin
function to preserve the index name of the left GeoDataFrame (#1150).Acknowledgments
Thanks to everyone who contributed to this release!
A total of 12 people contributed patches to this release. People with a "+" by their names contributed a patch for the first time.
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.
--
You received this message because you are subscribed to the Google Groups "PyData" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pydata+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pydata/CALQtMBYGjZ3Mg83S%2Bc%3DU_9ysNT%2BGGZ_MztygtNJBzkm%2B9iencw%40mail.gmail.com.