Geopandas Versions Save

Python tools for geographic data

v1.0.1

1 day ago

A small bug fix release fixing a regression caused by 1.0.0.

Bug fixes:

  • Support a named datetime or object dtype index in explore() (#3360, #3364).
  • Fix a regression preventing a Series as an argument for geometric methods (#3363)

Full Changelog: https://github.com/geopandas/geopandas/compare/v1.0.0...v1.0.1

v1.0.0

1 week ago

Notes on dependencies:

  • GeoPandas 1.0 drops support for shapely<2 and PyGEOS. The only geometry engine that is currently supported is shapely >= 2. As a consequence, spatial indexing based on the rtree package has also been removed (#3035).
  • The I/O engine now defaults to Pyogrio which is now installed with GeoPandas instead of Fiona (#3223).

New methods:

  • Added count_geometries method from shapely to GeoSeries/GeoDataframe (#3154).
  • Added count_interior_rings method from shapely to GeoSeries/GeoDataframe (#3154)
  • Added relate_pattern method from shapely to GeoSeries/GeoDataframe (#3211).
  • Added intersection_all method from shapely to GeoSeries/GeoDataframe (#3228).
  • Added line_merge method from shapely to GeoSeries/GeoDataframe (#3214).
  • Added set_precision and get_precision methods from shapely to GeoSeries/GeoDataframe (#3175).
  • Added count_coordinates method from shapely to GeoSeries/GeoDataframe (#3026).
  • Added minimum_clearance method from shapely to GeoSeries/GeoDataframe (#2989).
  • Added shared_paths method from shapely to GeoSeries/GeoDataframe (#3215).
  • Added is_ccw method from shapely to GeoSeries/GeoDataframe (#3027).
  • Added is_closed attribute from shapely to GeoSeries/GeoDataframe (#3092).
  • Added force_2d and force_3d methods from shapely to GeoSeries/GeoDataframe (#3090).
  • Added voronoi_polygons method from shapely to GeoSeries/GeoDataframe (#3177).
  • Added contains_properly method from shapely to GeoSeries/GeoDataframe (#3105).
  • Added build_area method exposing build_area shapely to GeoSeries/GeoDataframe (#3202).
  • Added snap method from shapely to GeoSeries/GeoDataframe (#3086).
  • Added transform method from shapely to GeoSeries/GeoDataFrame (#3075).
  • Added get_geometry method from shapely to GeoSeries/GeoDataframe (#3287).
  • Added dwithin method to check for a "distance within" predicate on GeoSeries/GeoDataFrame (#3153).
  • Added to_geo_dict method to generate GeoJSON-like dictionary from a GeoDataFrame (#3132).
  • Added polygonize method exposing both polygonize and polygonize_full from shapely to GeoSeries/GeoDataframe (#2963).
  • Added is_valid_reason method from shapely to GeoSeries/GeoDataframe (#3176).
  • Added to_arrow method and from_arrow class method to GeoSeries/GeoDataFrame to export and import to/from Arrow data with GeoArrow extension types (#3219, #3301).

New features and improvements:

  • Added predicate="dwithin" option and distance argument to the sindex.query() method and sjoin (#2882).
  • GeoSeries and GeoDataFrame __repr__ now trims trailing zeros for a more readable output (#3087).
  • Add on_invalid parameter to from_wkt and from_wkb (#3110).
  • make_valid option in overlay now uses the make_valid method instead of buffer(0) (#3113).
  • Passing "geometry" as dtype to pd.read_csv will now return a GeoSeries for the specified columns (#3101).
  • Added support to read_file for the mask keyword for the pyogrio engine (#3062).
  • Added support to read_file for the columns keyword for the fiona engine (#3133).
  • Added support to to_parquet and read_parquet for writing and reading files using the GeoArrow-based native geometry encoding of GeoParquet 1.1 (#3253, #3275).
  • Add sort keyword to clip method for GeoSeries and GeoDataFrame to allow optional preservation of the original order of observations (#3233).
  • Added show_bbox, drop_id and to_wgs84 arguments to allow further customization of GeoSeries.to_json (#3226).
  • explore now supports GeoDataFrames with additional columns containing datetimes, uuids and other non JSON serializable objects (#3261).
  • The GeoSeries.fillna method now supports the limit keyword (#3290).
  • Added on_attribute option argument to the sjoin() method, allowing to restrict joins to the observations with matching attributes. (#3231)
  • Added support for bbox covering encoding in geoparquet. Can filter reading of parquet files based on a bounding box, and write out a bounding box column to parquet files (#3282).
  • align keyword in binary methods now defaults to None, treated as True. Explicit True will silence the warning about mismatched indices (#3212).
  • GeoSeries.set_crs can now be used to remove CRS information by passing crs=None, allow_override=True (#3316).
  • Added autolim keyword argument to GeoSeries.plot() and GeoDataFrame.plot() (#2817).
  • Added metadata parameter to GeoDataFrame.to_file (#2850)
  • Updated documentation to clarify that passing a named (Geo)Series as the geometry argument to the GeoDataFrame constructor will not use the name but will always
    produce a GeoDataFrame with an active geometry column named "geometry" (#3337).
  • read_postgis will query the spatial_ref_sys table to determine the CRS authority instead of its current behaviour of assuming EPSG. In the event the spiatal_ref_sys table is not present, or the SRID is not present, read_postgis will fallback on assuming EPSG CRS authority. (#3329)

Backwards incompatible API changes:

  • The sjoin method will now preserve the name of the index of the right GeoDataFrame, if it has one, instead of always using "index_right" as the name for the resulting column in the return value (#846, #2144).
  • GeoPandas now raises a ValueError when an unaligned Series is passed as a method argument to avoid confusion of whether the automatic alignment happens or not (#3271).
  • The deprecated default value of GeoDataFrame/ GeoSeries explode(.., index_parts=True) is now set to false for consistency with pandas (#3174).
  • The behaviour of set_geometry has been changed when passed a (Geo)Series ser with a name. The new active geometry column name in this case will be ser.name, if not None, rather than the previous active geometry column name. This means that if the new and old names are different, then both columns will be preserved in the GeoDataFrame. To replicate the previous behaviour, you can instead call gdf.set_geometry(ser.rename(gdf.active_geometry_name)) (#3237). Note that this behaviour change does not affect the GeoDataframe constructor, passing a named GeoSeries ser to GeoDataFrame(df, geometry=ser) will always produce a GeoDataFrame with a geometry column named "geometry" to preserve backwards compatibility. If you would like to instead propagate the name of ser when constructing a GeoDataFrame, you can instead call df.set_geometry(ser) or GeoDataFrame(df, geometry=ser).rename_geometry(ser.name) (#3337).
  • delaunay_triangles now considers all geometries together when creating the Delaunay triangulation instead of performing the operation element-wise. If you want to generate Delaunay triangles for each geometry separately, use shapely.delaunay_triangles instead. (#3273)
  • Reading a data source that does not have a geometry field using read_file now returns a Pandas DataFrame instead of a GeoDataFrame with an empty geometry column.

Enforced deprecations:

  • The deprecation of geopandas.datasets has been enforced and the module has been removed. New sample datasets are now available in the geodatasets package (#3084).
  • Many longstanding deprecated functions, methods and properties have been removed (#3174), (#3190)
    • Removed deprecated functions geopandas.io.read_file, geopandas.io.to_file and geopandas.io.sql.read_postgis. geopandas.read_file, geopandas.read_postgis and the GeoDataFrame/GeoSeries to_file(..) method should be used instead.
    • Removed deprecated GeometryArray.data property, np.asarray(..) or the to_numpy() method should be used instead.
    • Removed deprecated sindex.query_bulk method, using sindex.query instead.
    • Removed deprecated sjoin parameter op, predicate should be supplied instead.
    • Removed deprecated GeoSeries/ GeoDataFrame methods __xor__, __or__, __and__ and __sub__. Instead use methods symmetric_difference, union, intersection and difference respectively.
    • Removed deprecated plotting functions plot_polygon_collection, plot_linestring_collection and plot_point_collection, use the GeoSeries/GeoDataFrame .plot method directly instead.
    • Removed deprecated GeoSeries/GeoDataFrame .plot parameters axes and colormap, instead use ax and cmap respectively.
    • Removed compatibility for specifying the version keyword in to_parquet and to_feather. This keyword will now be passed through to pyarrow and use schema_version to specify the GeoParquet specification version (#3334).

New deprecations:

  • unary_union attribute is now deprecated and replaced by the union_all() method (#3007) allowing opting for a faster union algorithm for coverages (#3151).

  • The include_fields and ignore_fields keywords in read_file() are deprecated for the default pyogrio engine. Currently those are translated to the columns keyword for backwards compatibility, but you should directly use the columns keyword instead to select which columns to read (#3133).

  • The drop keyword in set_geometry has been deprecated, and in future the drop=True behaviour will be removed (#3237). To prepare for this change, you should remove any explicit drop=False calls in your code (the default behaviour already is the same as drop=False). To replicate the previous drop=True behaviour you should replace gdf.set_geometry(new_geo_col, drop=True) with

    geo_col_name = gdf.active_geometry_name
    gdf.set_geometry(new_geo_col).drop(columns=geo_col_name).rename_geometry(geo_col_name)
    
  • The geopandas.use_pygeos option has been deprecated and will be removed in GeoPandas 1.1 (#3283)

  • Manual overriding of an existing CRS of a GeoSeries or GeoDataFrame by setting the crs property has been deprecated and will be disabled in future. Use the set_crs() method instead (#3085).

Bug fixes:

  • Fix GeoDataFrame.merge() incorrectly returning a DataFrame instead of a GeoDataFrame when the suffixes argument is applied to the active geometry column (#2933).
  • Fix bug in GeoDataFrame constructor where if geometry is given a named GeoSeries the name was not used as the active geometry column name (#3237).
  • Fix bug in GeoSeries constructor when passing a Series and specifying a crs to not change the original input data (#2492).
  • Fix regression preventing reading from file paths containing hashes in read_file with the fiona engine (#3280). An analgous fix for pyogrio is included in pyogrio 0.8.1.
  • Fix to_parquet to write correct metadata in case of 3D geometries (#2824).
  • Fixes for compatibility with psycopg (#3167).
  • Fix to allow appending dataframes with no CRS to PostGIS tables with no CRS (#3328)
  • Fix plotting of all-empty GeoSeries using explore (#3316).

Acknowledgments

Thanks to everyone who contributed to this release! A total of 30 people contributed patches to this release. People with a "+" by their names contributed for the first time.

  • Alec Johnson +
  • Bill Morris +
  • Brendan Ward
  • Brett Naul
  • Christopher Hedemann
  • Daniel Jahn (dahn) +
  • Hofer-Julian +
  • James McBride
  • John Moutafis +
  • Joris Van den Bossche
  • Julien Seguinot +
  • Kaushik
  • Kyle Barron
  • Martin Fleischmann
  • Matt Richards
  • Nicholas YS Tan +
  • Nikolas Ovaskainen +
  • NoharaMasato
  • Paddy Mullen +
  • Pieter Roggemans
  • Rambaud Pierrick
  • Raphael Quast +
  • Ray Bell
  • Robin Wilson +
  • Sean Gillies
  • Sebastian Zasadny +
  • Trinh Quoc Anh +
  • Will Schlitzer
  • aspyk +
  • dependabot[bot]

Full Changelog: https://github.com/geopandas/geopandas/compare/v0.14.0...v1.0.0

v1.0.0rc1

2 weeks ago

Notes on dependencies:

  • GeoPandas 1.0 drops support for shapely<2 and PyGEOS. The only geometry engine that is currently supported is shapely >= 2. As a consequence, spatial indexing based on the rtree package has also been removed (#3035).
  • The I/O engine now defaults to Pyogrio which is now installed with GeoPandas instead of Fiona (#3223).

New methods:

  • Added count_geometries method from shapely to GeoSeries/GeoDataframe (#3154).
  • Added count_interior_rings method from shapely to GeoSeries/GeoDataframe (#3154)
  • Added relate_pattern method from shapely to GeoSeries/GeoDataframe (#3211).
  • Added intersection_all method from shapely to GeoSeries/GeoDataframe (#3228).
  • Added line_merge method from shapely to GeoSeries/GeoDataframe (#3214).
  • Added set_precision and get_precision methods from shapely to GeoSeries/GeoDataframe (#3175).
  • Added count_coordinates method from shapely to GeoSeries/GeoDataframe (#3026).
  • Added minimum_clearance method from shapely to GeoSeries/GeoDataframe (#2989).
  • Added shared_paths method from shapely to GeoSeries/GeoDataframe (#3215).
  • Added is_ccw method from shapely to GeoSeries/GeoDataframe (#3027).
  • Added is_closed attribute from shapely to GeoSeries/GeoDataframe (#3092).
  • Added force_2d and force_3d methods from shapely to GeoSeries/GeoDataframe (#3090).
  • Added voronoi_polygons method from shapely to GeoSeries/GeoDataframe (#3177).
  • Added contains_properly method from shapely to GeoSeries/GeoDataframe (#3105).
  • Added build_area method exposing build_area shapely to GeoSeries/GeoDataframe (#3202).
  • Added snap method from shapely to GeoSeries/GeoDataframe (#3086).
  • Added transform method from shapely to GeoSeries/GeoDataFrame (#3075).
  • Added get_geometry method from shapely to GeoSeries/GeoDataframe (#3287).
  • Added dwithin method to check for a "distance within" predicate on GeoSeries/GeoDataFrame (#3153).
  • Added to_geo_dict method to generate GeoJSON-like dictionary from a GeoDataFrame (#3132).
  • Added polygonize method exposing both polygonize and polygonize_full from shapely to GeoSeries/GeoDataframe (#2963).
  • Added is_valid_reason method from shapely to GeoSeries/GeoDataframe (#3176).
  • Added to_arrow method and from_arrow class method to GeoSeries/GeoDataFrame to export and import to/from Arrow data with GeoArrow extension types (#3219, #3301).

New features and improvements:

  • Added predicate="dwithin" option and distance argument to the sindex.query() method and sjoin (#2882).
  • GeoSeries and GeoDataFrame __repr__ now trims trailing zeros for a more readable output (#3087).
  • Add on_invalid parameter to from_wkt and from_wkb (#3110).
  • make_valid option in overlay now uses the make_valid method instead of buffer(0) (#3113).
  • Passing "geometry" as dtype to pd.read_csv will now return a GeoSeries for the specified columns (#3101).
  • Added support to read_file for the mask keyword for the pyogrio engine (#3062).
  • Added support to read_file for the columns keyword for the fiona engine (#3133).
  • Added support to to_parquet and read_parquet for writing and reading files using the GeoArrow-based native geometry encoding of GeoParquet 1.1 (#3253, #3275).
  • Add sort keyword to clip method for GeoSeries and GeoDataFrame to allow optional preservation of the original order of observations (#3233).
  • Added show_bbox, drop_id and to_wgs84 arguments to allow further customization of GeoSeries.to_json (#3226).
  • explore now supports GeoDataFrames with additional columns containing datetimes, uuids and other non JSON serializable objects (#3261).
  • The GeoSeries.fillna method now supports the limit keyword (#3290).
  • Added support for bbox covering encoding in geoparquet. Can filter reading of parquet files based on a bounding box, and write out a bounding box column to parquet files (#3282).
  • align keyword in binary methods now defaults to None, treated as True. Explicit True will silence the warning about mismatched indices (#3212).
  • GeoSeries.set_crs can now be used to remove CRS information by passing crs=None, allow_override=True (#3316).
  • Added autolim keyword argument to GeoSeries.plot() and GeoDataFrame.plot() (#2817).
  • Updated documentation to clarify that passing a named (Geo)Series as the geometry argument to the GeoDataFrame constructor will not use the name but will always
    produce a GeoDataFrame with an active geometry column named "geometry" (#3337).
  • read_postgis will query the spatial_ref_sys table to determine the CRS authority instead of its current behaviour of assuming EPSG. In the event the spiatal_ref_sys table is not present, or the SRID is not present, read_postgis will fallback on assuming EPSG CRS authority. (#3329)

Backwards incompatible API changes:

  • The sjoin method will now preserve the name of the index of the right GeoDataFrame, if it has one, instead of always using "index_right" as the name for the resulting column in the return value (#846, #2144).
  • GeoPandas now raises a ValueError when an unaligned Series is passed as a method argument to avoid confusion of whether the automatic alignment happens or not (#3271).
  • The deprecated default value of GeoDataFrame/ GeoSeries explode(.., index_parts=True) is now set to false for consistency with pandas (#3174).
  • The behaviour of set_geometry has been changed when passed a (Geo)Series ser with a name. The new active geometry column name in this case will be ser.name, if not None, rather than the previous active geometry column name. This means that if the new and old names are different, then both columns will be preserved in the GeoDataFrame. To replicate the previous behaviour, you can instead call gdf.set_geometry(ser.rename(gdf.active_geometry_name)) (#3237). Note that this behaviour change does not affect the GeoDataframe constructor, passing a named GeoSeries ser to GeoDataFrame(df, geometry=ser) will always produce a GeoDataFrame with a geometry column named "geometry" to preserve backwards compatibility. If you would like to instead propagate the name of ser when constructing a GeoDataFrame, you can instead call df.set_geometry(ser) or GeoDataFrame(df, geometry=ser).rename_geometry(ser.name) (#3337).
  • delaunay_triangles now considers all geometries together when creating the Delaunay triangulation instead of performing the operation element-wise. If you want to generate Delaunay triangles for each geometry separately, use shapely.delaunay_triangles instead. (#3273)
  • Reading a data source that does not have a geometry field using read_file now returns a Pandas DataFrame instead of a GeoDataFrame with an empty geometry column.

Enforced deprecations:

  • The deprecation of geopandas.datasets has been enforced and the module has been removed. New sample datasets are now available in the geodatasets package (#3084).
  • Many longstanding deprecated functions, methods and properties have been removed (#3174), (#3190)
    • Removed deprecated functions geopandas.io.read_file, geopandas.io.to_file and geopandas.io.sql.read_postgis. geopandas.read_file, geopandas.read_postgis and the GeoDataFrame/GeoSeries to_file(..) method should be used instead.
    • Removed deprecated GeometryArray.data property, np.asarray(..) or the to_numpy() method should be used instead.
    • Removed deprecated sindex.query_bulk method, using sindex.query instead.
    • Removed deprecated sjoin parameter op, predicate should be supplied instead.
    • Removed deprecated GeoSeries/ GeoDataFrame methods __xor__, __or__, __and__ and __sub__. Instead use methods symmetric_difference, union, intersection and difference respectively.
    • Removed deprecated plotting functions plot_polygon_collection, plot_linestring_collection and plot_point_collection, use the GeoSeries/GeoDataFrame .plot method directly instead.
    • Removed deprecated GeoSeries/GeoDataFrame .plot parameters axes and colormap, instead use ax and cmap respectively.
    • Removed compatibility for specifying the version keyword in to_parquet and to_feather. This keyword will now be passed through to pyarrow and use schema_version to specify the GeoParquet specification version (#3334).

New deprecations:

  • unary_union attribute is now deprecated and replaced by the union_all() method (#3007) allowing opting for a faster union algorithm for coverages (#3151).

  • The include_fields and ignore_fields keywords in read_file() are deprecated for the default pyogrio engine. Currently those are translated to the columns keyword for backwards compatibility, but you should directly use the columns keyword instead to select which columns to read (#3133).

  • The drop keyword in set_geometry has been deprecated, and in future the drop=True behaviour will be removed (#3237). To prepare for this change, you should remove any explicit drop=False calls in your code (the default behaviour already is the same as drop=False). To replicate the previous drop=True behaviour you should replace gdf.set_geometry(new_geo_col, drop=True) with

    geo_col_name = gdf.active_geometry_name
    gdf.set_geometry(new_geo_col).drop(columns=geo_col_name).rename_geometry(geo_col_name)
    
  • The geopandas.use_pygeos option has been deprecated and will be removed in GeoPandas 1.1 (#3283)

  • Manual overriding of an existing CRS of a GeoSeries or GeoDataFrame by setting the crs property has been deprecated and will be disabled in future. Use the set_crs() method instead (#3085).

Bug fixes:

  • Fix GeoDataFrame.merge() incorrectly returning a DataFrame instead of a GeoDataFrame when the suffixes argument is applied to the active geometry column (#2933).
  • Fix bug in GeoDataFrame constructor where if geometry is given a named GeoSeries the name was not used as the active geometry column name (#3237).
  • Fix bug in GeoSeries constructor when passing a Series and specifying a crs to not change the original input data (#2492).
  • Fix regression preventing reading from file paths containing hashes in read_file with the fiona engine (#3280). An analgous fix for pyogrio is included in pyogrio 0.8.1.
  • Fix to_parquet to write correct metadata in case of 3D geometries (#2824).
  • Fixes for compatibility with psycopg (#3167).
  • Fix to allow appending dataframes with no CRS to PostGIS tables with no CRS (#3328)
  • Fix plotting of all-empty GeoSeries using explore (#3316).

v0.14.4

2 months ago

Small bug-fix release with several fixes for compatibility with the upcoming pandas 3.0, numpy 2.0 and fiona 1.10 releases.

v1.0.0-alpha1

2 months ago

Notes on dependencies:

  • GeoPandas 1.0 drops support for shapely<2 and PyGEOS. The only geometry engine that is currently supported is shapely >= 2. As a consequence, spatial indexing based on the rtree package has also been removed. (#3035)
  • The I/O engine now defaults to Pyogrio which is now installed with GeoPandas instead of Fiona. (#3223)

API changes:

  • unary_union is now deprecated and replaced by the union_all method (#3007).
  • align keyword in binary methods now defaults to None, treated as True. Explicit True will silence the warning about mismachted indices. (#3212)
  • The sjoin method will now preserve the name of the index of the right GeoDataFrame, if it has one, instead of always using "index_right" as the name for the resulting column in the return value (#846, #2144).

New methods:

  • Added line_merge method from shapely to GeoSeries/GeoDataframe (#3214).
  • Added set_precision and get_precision methods from shapely to GeoSeries/GeoDataframe (#3175).
  • Added count_coordinates method from shapely to GeoSeries/GeoDataframe (#3026).
  • Added minimum_clearance method from shapely to GeoSeries/GeoDataframe (#2989).
  • Added is_ccw method from shapely to GeoSeries/GeoDataframe (#3027).
  • Added is_closed attribute from shapely to GeoSeries/GeoDataframe (#3092).
  • Added force_2d and force_3d methods from shapely to GeoSeries/GeoDataframe (#3090).
  • Added contains_properly method from shapely to GeoSeries/GeoDataframe (#3105).
  • Added snap method from shapely to GeoSeries/GeoDataframe (#3086).
  • Added transform method from shapely to GeoSeries/GeoDataFrame (#3075).
  • Added dwithin method to check for a "distance within" predicate on GeoSeries/GeoDataFrame (#3153).
  • Added to_geo_dict method to generate GeoJSON-like dictionary from a GeoDataFrame (#3132).

New features and improvements:

  • Added predicate="dwithin" option and distance argument to the sindex.query() method and sjoin (#2882).
  • GeoSeries and GeoDataFrame __repr__ now trims trailing zeros for a more readable output (#3087).
  • Add on_invalid parameter to from_wkt and from_wkb (#3110).
  • make_valid option in overlay now uses the make_valid method instead of buffer(0) (#3113).
  • Passing "geometry" as dtype to pd.read_csv will now return a GeoSeries for the specified columns (#3101).
  • Added support to read_file for the mask keyword for the pyogrio engine (#3062).
  • Added support to read_file for the columns keyword for the fiona engine (#3133).
  • Added show_bbox, drop_id and to_wgs84 arguments to allow further customization of GeoSeries.to_json (#3226)

Backwards incompatible API changes:

  • The deprecated default value of GeoDataFrame/ GeoSeries explode(.., index_parts=True) is now set to false for consistency with pandas (#3174).
  • The behaviour of set_geometry has been changed when passed a (Geo)Series ser with a name. The new active geometry column name in this case will be ser.name, if not None, rather than the previous active geometry column name. This means that if the new and old names are different, then both columns will be preserved in the GeoDataFrame. To replicate the previous behaviour, you can instead call gdf.set_geometry(ser.rename(gdf.active_geometry_name)) (#3237).

Potentially breaking changes:

  • reading a data source that does not have a geometry field using read_file now returns a Pandas DataFrame instead of a GeoDataFrame with an empty geometry column.

Bug fixes:

  • Fix GeoDataFrame.merge() incorrectly returning a DataFrame instead of a GeoDataFrame when the suffixes argument is applied to the active geometry column (#2933).
  • Fix bug in GeoDataFrame constructor where if geometry is given a named GeoSeries the name was not used as the active geometry column name (#3237).

Deprecations and compatibility notes:

  • The deprecation of geopandas.datasets has been enforced and the module has been removed. New sample datasets are now available in the geodatasets package (#3084).

  • Many longstanding deprecated functions, methods and properties have been removed (#3174), (#3189)

    • Removed deprecated functions geopandas.io.read_file, geopandas.io.to_file and geopandas.io.sql.read_postgis. geopandas.read_file, geopandas.read_postgis and the GeoDataFrame/GeoSeries to_file(..) method should be used instead.
    • Removed deprecated GeometryArray.data property, np.asarray(..) or the to_numpy() method should be used instead.
    • Removed deprecated sindex.query_bulk method, using sindex.query instead.
    • Removed deprecated sjoin parameter op, predicate should be supplied instead.
    • Removed deprecated GeoSeries/ GeoDataFrame methods __xor__, __or__, __and__ and __sub__. Instead use methods symmetric_difference, union, intersection and difference respectively.
    • Removed deprecated plotting functions plot_polygon_collection, plot_linestring_collection and plot_point_collection, use the GeoSeries/GeoDataFrame .plot method directly instead.
    • Removed deprecated GeoSeries/GeoDataFrame .plot parameters axes and colormap, instead use ax and cmap respectively.
  • Fixes for compatibility with psycopg (#3167).

  • The include_fields and ignore_fields keywords in read_file() are deprecated for the default pyogrio engine. Currently those are translated to the columns keyword for backwards compatibility, but you should directly use the columns keyword instead to select which columns to read (#3133).

  • The drop keyword in set_geometry has been deprecated, and in future the drop=True behaviour will be removed (#3237). To prepare for this change, you should remove any explicit drop=False calls in your code (the default behaviour already is the same as drop=False). To replicate the previous drop=True behaviour you should replace gdf.set_geometry(new_geo_col, drop=True) with

    geo_col_name = gdf.active_geometry_name
    gdf.set_geometry(new_geo_col).drop(columns=geo_col_name).rename_geometry(geo_col_name)
    

v0.14.3

5 months ago

Small bug-fix release:

  • Several fixes for compatibility with the latest pandas 2.2 release.
  • Fix bug in pandas.concat CRS consistency checking where CRS differing by WKT whitespace only were treated as incompatible (#3023).

v0.14.2

5 months ago

Small bug-fix release:

  • Fix regression in overlay where using buffer(0) instead of make_valid internally produced invalid results (#3074).
  • Fix explore() method when the active geometry contains missing and empty geometries (#3094).

v0.14.1

7 months ago

Small bug-fix release updating the GeoParquet spec version and with a critical security fix:

  • The Parquet and Feather IO functions now support the latest 1.0.0 version of the GeoParquet specification (geoparquet.org) (#2663).
  • Fix read_parquet and read_feather for CVE-2023-47248 (#3070).

v0.14.0

9 months ago

GeoPandas will use Shapely 2.0 by default instead of PyGEOS when both Shapely >= 2.0 and PyGEOS are installed. PyGEOS will continue to be used by default when PyGEOS is installed alongside Shapely < 2.0. Support for PyGEOS and Shapely < 2.0 will be removed in GeoPandas 1.0. (#2999)

API changes:

  • seed keyword in sample_points is deprecated. Use rng instead. (#2913).

New methods:

  • Added concave_hull method from shapely to GeoSeries/GeoDataframe (#2903).
  • Added delaunay_triangles method from shapely to GeoSeries/GeoDataframe (#2907).
  • Added extract_unique_points method from shapely to GeoSeries/GeoDataframe (#2915).
  • Added frechet_distance() method from shapely to GeoSeries/GeoDataframe (#2929).
  • Added hausdorff_distance method from shapely to GeoSeries/GeoDataframe (#2909).
  • Added minimum_rotated_rectangle method from shapely to GeoSeries/GeoDataframe (#2541).
  • Added offset_curve method from shapely to GeoSeries/GeoDataframe (#2902).
  • Added remove_repeated_points method from shapely to GeoSeries/GeoDataframe (#2940).
  • Added reverse method from shapely to GeoSeries/GeoDataframe (#2988).
  • Added segmentize method from shapely to GeoSeries/GeoDataFrame (#2910).
  • Added shortest_line method from shapely to GeoSeries/GeoDataframe (#2960).

New features and improvements:

  • Added exclusive parameter to sjoin_nearest method for Shapely >= 2.0 (#2877)
  • The to_file() method will now automatically detect the FlatGeoBuf driver for files with the .fgb extension (#2958)

Bug fixes:

  • Fix ambiguous error when GeoDataFrame is initialized with a column called "crs" (#2944)
  • Fix a color assignment in explore when using UserDefined bins (#2923)
  • Fix bug in apply with axis=1 where the given user defined function returns nested data in the geometry column (#2959)
  • Properly infer schema for np.int32 and pd.Int32Dtype columns (#2950)
  • assert_geodataframe_equal now handles GeoDataFrames with no active geometry (#2498)

Notes on (optional) dependencies:

  • GeoPandas 0.14 drops support for Python 3.8 and pandas 1.3 and below (the minimum supported pandas version is now 1.4). Further, the minimum required versions for the listed dependencies have now changed to shapely 1.8.0, fiona 1.8.21, pyproj 3.3.0 and matplotlib 3.5.0 (#3001)

Deprecations and compatibility notes:

  • geom_almost_equals() methods have been deprecated and geom_equals_exact() should be used instead (#2604).

Acknowledgments

Thanks to everyone who contributed to this release! A total of 16 people contributed patches to this release. People with a "+" by their names contributed for the first time.

Full Changelog: https://github.com/geopandas/geopandas/compare/v0.13.2...v0.14.0

v0.13.2

1 year ago

Small bug-fix release with this critical fix:

  • Fix a regression in reading from local file URIs (file://..) using geopandas.read_file (#2948).