Skip to content

Releases: geopandas/geopandas

v0.14.4

28 Apr 13:49
Compare
Choose a tag to compare

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

13 Apr 20:59
Compare
Choose a tag to compare
v1.0.0-alpha1 Pre-release
Pre-release

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

31 Jan 19:22
Compare
Choose a tag to compare

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

04 Jan 21:40
Compare
Choose a tag to compare

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

11 Nov 09:30
Compare
Choose a tag to compare

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

15 Sep 08:26
Compare
Choose a tag to compare

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: v0.13.2...v0.14.0

v0.13.2

06 Jun 09:00
Compare
Choose a tag to compare

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

05 Jun 06:53
Compare
Choose a tag to compare

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

06 May 12:23
Compare
Choose a tag to compare

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

10 Dec 18:39
Compare
Choose a tag to compare

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)