Releases: geopandas/geopandas
v0.14.4
v1.0.0-alpha1
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 theunion_all
method (#3007).align
keyword in binary methods now defaults toNone
, 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
andget_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
andforce_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 anddistance
argument to thesindex.query()
method
andsjoin
(#2882). - GeoSeries and GeoDataFrame
__repr__
now trims trailing zeros for a more readable
output (#3087). - Add
on_invalid
parameter tofrom_wkt
andfrom_wkb
(#3110). make_valid
option inoverlay
now uses themake_valid
method instead of
buffer(0)
(#3113).- Passing
"geometry"
asdtype
topd.read_csv
will now return a GeoSeries for
the specified columns (#3101). - Added support to
read_file
for themask
keyword for the pyogrio engine (#3062). - Added support to
read_file
for thecolumns
keyword for the fiona engine (#3133). - Added
show_bbox
,drop_id
andto_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)Seriesser
with a name.
The new active geometry column name in this case will beser.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 callgdf.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 aDataFrame
instead of a
GeoDataFrame
when thesuffixes
argument is applied to the active
geometry column (#2933). - Fix bug in
GeoDataFrame
constructor where ifgeometry
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
andgeopandas.io.sql.read_postgis
.
geopandas.read_file
,geopandas.read_postgis
and the GeoDataFrame/GeoSeriesto_file(..)
method should be used instead. - Removed deprecated
GeometryArray.data
property,np.asarray(..)
or theto_numpy()
method should be used instead. - Removed deprecated
sindex.query_bulk
method, usingsindex.query
instead. - Removed deprecated
sjoin
parameterop
,predicate
should be supplied instead. - Removed deprecated GeoSeries/ GeoDataFrame methods
__xor__
,__or__
,__and__
and
__sub__
. Instead use methodssymmetric_difference
,union
,intersection
and
difference
respectively. - Removed deprecated plotting functions
plot_polygon_collection
,
plot_linestring_collection
andplot_point_collection
, use the GeoSeries/GeoDataFrame.plot
method directly instead. - Removed deprecated GeoSeries/GeoDataFrame
.plot
parametersaxes
andcolormap
, instead use
ax
andcmap
respectively.
- Removed deprecated functions
-
Fixes for compatibility with psycopg (#3167).
-
The
include_fields
andignore_fields
keywords inread_file()
are deprecated
for the default pyogrio engine. Currently those are translated to thecolumns
keyword
for backwards compatibility, but you should directly use thecolumns
keyword instead
to select which columns to read (#3133). -
The
drop
keyword inset_geometry
has been deprecated, and in future thedrop=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 asdrop=False
).
To replicate the previousdrop=True
behaviour you should replace
gdf.set_geometry(new_geo_col, drop=True)
withgeo_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
v0.14.2
v0.14.1
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
andread_feather
for CVE-2023-47248 (#3070).
v0.14.0
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 insample_points
is deprecated. Userng
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 tosjoin_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 usingUserDefined
bins (#2923) - Fix bug in
apply
withaxis=1
where the given user defined function returns nested
data in the geometry column (#2959) - Properly infer schema for
np.int32
andpd.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.
- Anudeep Adiraju +
- Christopher Hedemann +
- Geoff Boeing +
- harisbal +
- James Gardiner +
- Joris Van den Bossche
- Kaushik +
- Matt Richards
- Martin Fleischmann
- Ray Bell
- richardachen +
- Shogo Hida
- Simone Parmeggiani
- Steve Berdy +
- Darren Erik Vengroff +
- Wei Ji +
Full Changelog: v0.13.2...v0.14.0
v0.13.2
v0.13.1
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
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 anotherGeoSeries
(#2535). - Support specifying
min_zoom
andmax_zoom
inside themap_kwds
argument for.explore()
(#2599). - Added support for append (
mode="a"
orappend=True
) into_file()
usingengine="pyogrio"
(#2788). - Added a
to_wgs84
keyword toto_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 ofquery()
(#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 whenna='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 +