Skip to content

Update geopandas to 1.1.1#2281

Closed
pyup-bot wants to merge 2 commits intomasterfrom
pyup-update-geopandas-0.14.4-to-1.1.1
Closed

Update geopandas to 1.1.1#2281
pyup-bot wants to merge 2 commits intomasterfrom
pyup-update-geopandas-0.14.4-to-1.1.1

Conversation

@pyup-bot
Copy link
Collaborator

This PR updates geopandas from 0.14.4 to 1.1.1.

Changelog

1.1.1

Bug fixes:

- Fix regression in the GeoDataFrame constructor when np.nan is given as an only geometry (3591).
- Fix regression in `overlay` with `how="identity"` when input dataframes have column
names that are equal (3596).

1.1.0

Notes on dependencies:

- GeoPandas 1.1 now requires Python 3.10 or greater and pandas 2.0, numpy 1.24, pyproj 3.5,
are now the minimum required version for these dependencies.
Furthermore, the minimum tested version for optional dependencies has been updated to
fiona 1.8.21, scipy 1.9, matplotlib 3.7, mapclassify 2.5, folium 0.12 and
SQLAlchemy 2.0. Older versions of these libraries may continue to work, but are no longer
considered supported (3371).

New features and improvements:

- Added options to return the result of `SpatialIndex.query` in a form of a dense or a
sparse boolean array. This adds optional dependency on `scipy` for the sparse output.
Note that this also changes the previously undocumented behaviour of the `output_format`
keyword (1674).
- Add ``grid_size`` parameter to ``union_all`` and ``dissolve`` (3445).
- `GeoDataFrame.plot` now supports `pd.Index` as an input for the `column` keyword (3463).
- Added `disjoint_subset` union algorithm for `union_all` and `dissolve` (3534).
- Added `constrained_delaunay_triangles` method to GeoSeries/GeoDataFrame (3552).
- Added `to_pandas_kwargs` argument to `from_arrow`, `read_parquet` and `read_feather`
to allow better control of conversion of non-geometric Arrow data to DataFrames (3466).
- Added `is_valid_coverage` and `invalid_coverage_edges` to GeoSeries/GeoDataFrame to
allow validation of polygonal  coverage (3545).
- Added `maximum_inscribed_circle` method from shapely to GeoSeries/GeoDataFrame (3544).
- Added `minimum_clearance_line` method from shapely to GeoSeries/GeoDataFrame (3543).
- Added `orient_polygons` method from shapely to GeoSeries/GeoDataFrame (3559).
- Added ``method`` and ``keep_collapsed`` argument to ``make_valid`` (3548).
- Added `simplify_coverage` method for topological simplification of polygonal coverages
to GeoSeries/GeoDataFrame (3541).
- Added initial support of M coordinates (`m` and `has_m` properties, `include_m` in `get_coordinates`) (3561).
- Added `geom_equals_identical` method exposing `equals_identical` from shapely to GeoSeries/GeoDataFrame (3560).
- GeoPandas now attempts to use a range request when reading from an URL even if the header
does not directly indicate its support (3572).
- Added `geopandas.accessors` module. Import this module to register a
`pandas.Series.geo` accessor, which exposes GeoSeries methods via pandas's
extension mechanism (3272).
- Improve performance of `overlay` with `how=identity` (3504).
- A warning message is raised in `read_file` when a GeoDataFrame or GeoSeries mask
and/or the source dataset is missing a defined CRS. (3464)
- GeoDataFrame no longer hard-codes the class internally, allowing easier subclassing (3505).

Bug fixes:

- Fix an issue that showed numpy dtypes in bbox in `to_geo_dict` and `__geo_interface__`. (3436)
- Fix an issue in `sample_points` that could occasionally result in non-uniform distribution (3470).
- Fix unspecified layer warning being emitted while reading multilayer datasets, even
when layer is specified when using the mask or bbox keywords (3378).
- Properly support named aggregations over a geometry column in `GroupBy.agg` (3368).
- Support GeoDataFrame constructor receiving arguments to `geometry` which are not
(Geo)Series, but instead should be interpreted as column names, like Enums (3384).
- Fix regression where constructing a GeoSeries from a pd.Series with GeometryDtype values
failed when `crs` was provided (3383).
- Fix regression where `overlay` with `keep_geom_type` returns wrong results if the
input contains invalid geometries (3395).
- Fix the dtype of the GeometryArray backing data being incorrect for zero length
GeoDataFrames causing errors in `overlay` (3424).
- Fix regression where constructing a GeoSeries from a pd.Series with GeometryDtype values
failed when `crs` was provided (3383).
- Fix plotting of polygons with holes by normalizing the coordinate order prior to plotting (3483).
- Fix an issue in plotting when polygon patches were not closed (3576).
- Fix ambiguous error when GeoDataFrame is initialised with a column called "crs" (3502).
- Avoid change of the plot aspect when plotting missing values (3438).

Deprecations and compatibility notes:

- The `GeoSeries.select` method wrapping the pandas `Series.select` method has been removed.
The upstream method no longer exists in all supported version of pandas (3394).
- The deprecated `geom_almost_equals` method has been removed. Use
`geom_equals_exact` instead (3522).

1.0.1

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)

1.0.0

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 `GeoDataFrame`s 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](https://geodatasets.readthedocs.io/en/latest/) 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

python
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).
Links

@pyup-bot
Copy link
Collaborator Author

Closing this in favor of #2411

@pyup-bot pyup-bot closed this Dec 22, 2025
@MBARIMike MBARIMike deleted the pyup-update-geopandas-0.14.4-to-1.1.1 branch December 22, 2025 21:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant