Geopandas Versions Save

Python tools for geographic data

v0.14.4

3 weeks 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

1 month 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

3 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

4 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

6 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

8 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

11 months ago

Small bug-fix release with this critical fix:

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

v0.13.1

11 months ago

Small bug-fix release with this critical fix:

  • Fix the a regression in reading from URLs using geopandas.read_file (#2908). This restores the behaviour to download all data up-front before passing it to the underlying engine (fiona or pyogrio), except if the server supports partial requests (to support reading a subset of a large file).

v0.13.0

1 year ago

New methods:

  • Added sample_points method to sample random points from Polygon or LineString geometries (#2860).
  • New hilbert_distance() method that calculates the distance along a Hilbert curve for each geometry in a GeoSeries/GeoDataFrame (#2297).
  • Support for sorting geometries (for example, using sort_values()) based on the distance along the Hilbert curve (#2070).
  • Added get_coordinates() method from shapely to GeoSeries/GeoDataframe (#2624).
  • Added minimum_bounding_circle() method from shapely to GeoSeries/GeoDataframe (#2621).
  • Added minimum_bounding_radius() as GeoSeries method (#2827).

Other new features and improvements:

  • The Parquet and Feather IO functions now support the latest 1.0.0-beta.1 version of the GeoParquet specification (<geoparquet.org>) (#2663).
  • Added support to fill missing values in GeoSeries.fillna via another GeoSeries (#2535).
  • Support specifying min_zoom and max_zoom inside the map_kwds argument for .explore() (#2599).
  • Added support for append (mode="a" or append=True) in to_file() using engine="pyogrio" (#2788).
  • Added a to_wgs84 keyword to to_json allowing automatic re-projecting to follow the 2016 GeoJSON specification (#416).
  • to_json output now includes a "crs" field if the CRS is not the default WGS84 (#1774).
  • Improve error messages when accessing the geometry attribute of GeoDataFrame without an active geometry column related to the default name "geometry" being provided in the constructor (#2577)

Deprecations and compatibility notes:

  • Added warning that unary_union will return 'GEOMETRYCOLLECTION EMPTY' instead of None for all-None GeoSeries. (#2618)
  • The query_bulk() method of the spatial index .sindex property is deprecated in favor of query() (#2823).

Bug fixes:

  • Ensure that GeoDataFrame created from DataFrame is a copy, not a view (#2667)
  • Fix mismatch between geometries and colors in plot() if an empty or missing geometry is present (#2224)
  • Escape special characters to avoid TemplateSyntaxError in explore() (#2657)
  • Fix to_parquet/to_feather to not write an invalid bbox (with NaNs) in the metadata in case of an empty GeoDataFrame (#2653)
  • Fix to_parquet/to_feather to use correct WKB flavor for 3D geometries (#2654)
  • Fix read_file to avoid reading all file bytes prior to calling Fiona or Pyogrio if provided a URL as input (#2796)
  • Fix copy() downcasting GeoDataFrames without an active geometry column to a DataFrame (#2775)
  • Fix geometry column name propagation when GeoDataFrame columns are a multiindex (#2088)
  • Fix iterfeatures() method of GeoDataFrame to correctly handle non-scalar values when na='drop' is specified (#2811)
  • Fix issue with passing custom legend labels to plot (#2886)

Notes on (optional) dependencies:

  • GeoPandas 0.13 drops support pandas 1.0.5 (the minimum supported pandas version is now 1.1). Further, the minimum required versions for the listed dependencies have now changed to shapely 1.7.1, fiona 1.8.19, pyproj 3.0.1 and matplotlib 3.3.4 (#2655)

Acknowledgments

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

  • 40% +
  • Brendan Ward
  • Dhruv Kapoor +
  • Dr Martin Black
  • Eric Kerfoot +
  • Ewout ter Hoeven
  • Frank Anema +
  • Isaac Boates
  • James McBride
  • Joris Van den Bossche
  • Kyle Barron
  • Levi Ob +
  • Martin Fleischmann
  • Matt Richards
  • Mike Taves
  • NoharaMasato +
  • Pieter Roggemans +
  • Rambaud Pierrick +
  • Ray Bell
  • Stefano Polloni +
  • Taha Soomro +
  • Tyler Caraza-Harter +
  • Vecko +
  • William Navarre +
  • Xiaokang Fu +
  • Yvonne Fröhlich +
  • anastassiavybornova +
  • dependabot[bot] +
  • github-actions[bot] +
  • rraymondgh
  • simberaj
  • wassname +

v0.12.2

1 year ago

Bug fixes:

  • Correctly handle geometries with Z dimension in to_crs() when using PyGEOS or Shapely >= 2.0 (previously the z coordinates were lost) (#1345).
  • Assign Crimea to Ukraine in the naturalearth_lowres built-in dataset (#2670)