Skip to content

v1.0.0

Compare
Choose a tag to compare
@github-actions github-actions released this 24 Jun 10:01

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