mirror of
https://github.com/wassname/geopandas.git
synced 2026-09-12 12:20:25 +08:00
RLS: 0.11 release notes (#2462)
* DOC: draft 0.11 release notes * finish all commit * code review suggestions Co-Authored-By: rraymondgh <42769112+rraymondgh@users.noreply.github.com> * reword geodataframe downcasting changes * cln * review, formatting, cleanup * Apply suggestions from code review Co-authored-by: rraymondgh <42769112+rraymondgh@users.noreply.github.com> Co-authored-by: Martin Fleischmann <martin@martinfleischmann.net> Co-authored-by: Joris Van den Bossche <jorisvandenbossche@gmail.com>
This commit is contained in:
co-authored by
rraymondgh
Martin Fleischmann
Joris Van den Bossche
parent
b28faaf521
commit
f0c36fe24f
+353
-242
@@ -1,24 +1,139 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
Version 0.11 (June 20, 2022)
|
||||
----------------------------
|
||||
|
||||
Highlights of this release:
|
||||
|
||||
- GeoParquet support updated to implement
|
||||
[v0.4.0](https://github.com/opengeospatial/geoparquet/releases/tag/v0.4.0) of the
|
||||
OpenGeospatial/GeoParquet specification (#2441). Backwards compatibility with v0.1.0 of
|
||||
the metadata spec (implemented in the previous releases of GeoPandas) is guaranteed,
|
||||
and reading and writing Parquet and Feather files will no longer produce a ``UserWarning``
|
||||
(#2327).
|
||||
|
||||
New features and improvements:
|
||||
|
||||
- Improved handling of GeoDataFrame when the active geometry column is
|
||||
lost from the GeoDataFrame. Previously, square bracket indexing ``gdf[[...]]`` returned
|
||||
a GeoDataFrame when the active geometry column was retained and a DataFrame was
|
||||
returned otherwise. Other pandas indexing methods (``loc``, ``iloc``, etc) did not follow
|
||||
the same rules. The new behaviour for all indexing/reshaping operations is now as
|
||||
follows (#2329, #2060):
|
||||
- If operations produce a ``DataFrame`` containing the active geometry column, a
|
||||
GeoDataFrame is returned
|
||||
- If operations produce a ``DataFrame`` containing ``GeometryDtype`` columns, but not the
|
||||
active geometry column, a ``GeoDataFrame`` is returned, where the active geometry
|
||||
column is set to ``None`` (set the new geometry column with ``set_geometry()``)
|
||||
- If operations produce a ``DataFrame`` containing no ``GeometryDtype`` columns, a
|
||||
``DataFrame`` is returned (this can be upcast again by calling ``set_geometry()`` or the
|
||||
``GeoDataFrame`` constructor)
|
||||
- If operations produce a ``Series`` of ``GeometryDtype``, a ``GeoSeries`` is returned,
|
||||
otherwise ``Series`` is returned.
|
||||
- Error messages for having an invalid geometry column
|
||||
have been improved, indicating the name of the last valid active geometry column set
|
||||
and whether other geometry columns can be promoted to the active geometry column
|
||||
(#2329).
|
||||
|
||||
- Datetime fields are now read and written correctly for GIS formats which support them
|
||||
(e.g. GPKG, GeoJSON) with fiona 1.8.14 or higher. Previously, datetimes were read as
|
||||
strings (#2202).
|
||||
- ``folium.Map`` keyword arguments can now be specified as the ``map_kwds`` argument to
|
||||
``GeoDataFrame.explore()`` method (#2315).
|
||||
- Add a new parameter ``style_function`` to ``GeoDataFrame.explore()`` to enable plot styling
|
||||
based on GeoJSON properties (#2377).
|
||||
- It is now possible to write an empty ``GeoDataFrame`` to a file for supported formats
|
||||
(#2240). Attempting to do so will now emit a ``UserWarning`` instead of a ``ValueError``.
|
||||
- Fast rectangle clipping has been exposed as ``GeoSeries/GeoDataFrame.clip_by_rect()``
|
||||
(#1928).
|
||||
- The ``mask`` parameter of ``GeoSeries/GeoDataFrame.clip()`` now accepts a rectangular mask
|
||||
as a list-like to perform fast rectangle clipping using the new
|
||||
``GeoSeries/GeoDataFrame.clip_by_rect()`` (#2414).
|
||||
- Bundled demo dataset ``naturalearth_lowres`` has been updated to version 5.0.1 of the
|
||||
source, with field ``ISO_A3`` manually corrected for some cases (#2418).
|
||||
|
||||
Deprecations and compatibility notes:
|
||||
|
||||
- The active development branch of geopandas on GitHub has been renamed from master to
|
||||
main (#2277).
|
||||
- Deprecated methods ``GeometryArray.equals_exact()`` and ``GeometryArray.almost_equals()``
|
||||
have been removed. They should
|
||||
be replaced with ``GeometryArray.geom_equals_exact()`` and
|
||||
``GeometryArray.geom_almost_equals()`` respectively (#2267).
|
||||
- Deprecated CRS functions ``explicit_crs_from_epsg()``, ``epsg_from_crs()`` and
|
||||
``get_epsg_file_contents()`` were removed (#2340).
|
||||
- Warning about the behaviour change to ``GeoSeries.isna()`` with empty
|
||||
geometries present has been removed (#2349).
|
||||
- Specifying a CRS in the ``GeoDataFrame/GeoSeries`` constructor which contradicted the
|
||||
underlying ``GeometryArray`` now raises a ``ValueError`` (#2100).
|
||||
- Specifying a CRS in the ``GeoDataFrame`` constructor when no geometry column is provided
|
||||
and calling ``GeoDataFrame. set_crs`` on a ``GeoDataFrame`` without an active geometry
|
||||
column now raise a ``ValueError`` (#2100)
|
||||
- Passing non-geometry data to the``GeoSeries`` constructor is now fully deprecated and
|
||||
will raise a ``TypeError`` (#2314). Previously, a ``pandas.Series`` was returned for
|
||||
non-geometry data.
|
||||
- Deprecated ``GeoSeries/GeoDataFrame`` set operations ``__xor__()``,
|
||||
``__or__()``, ``__and__()`` and ``__sub__()``, ``geopandas.io.file.read_file``/``to_file`` and
|
||||
``geopandas.io.sql.read_postgis`` now emit ``FutureWarning`` instead of
|
||||
``DeprecationWarning`` and will be completely removed in a future release.
|
||||
- Accessing the ``crs`` of a ``GeoDataFrame`` without active geometry column is deprecated and will be removed in GeoPandas 0.12 (#2373).
|
||||
|
||||
Bug fixes:
|
||||
|
||||
- ``GeoSeries.to_frame`` now creates a ``GeoDataFrame`` with the geometry column name set
|
||||
correctly (#2296)
|
||||
- Fix pickle files created with pygeos installed can not being readable when pygeos is
|
||||
not installed (#2237).
|
||||
- Fixed ``UnboundLocalError`` in ``GeoDataFrame.plot()`` using ``legend=True`` and
|
||||
``missing_kwds`` (#2281).
|
||||
- Fix ``explode()`` incorrectly relating index to columns, including where the input index
|
||||
is not unique (#2292)
|
||||
- Fix ``GeoSeries.[xyz]`` raising an ``IndexError`` when the underlying GeoSeries contains
|
||||
empty points (#2335). Rows corresponding to empty points now contain ``np.nan``.
|
||||
- Fix ``GeoDataFrame.iloc`` raising a ``TypeError`` when indexing a ``GeoDataFrame`` with only
|
||||
a single column of ``GeometryDtype`` (#1970).
|
||||
- Fix ``GeoDataFrame.iterfeatures()`` not returning features with the same field order as
|
||||
``GeoDataFrame.columns`` (#2396).
|
||||
- Fix ``GeoDataFrame.from_features()`` to support reading GeoJSON with null properties
|
||||
(#2243).
|
||||
- Fix ``GeoDataFrame.to_parquet()`` not intercepting ``engine`` keyword argument, breaking
|
||||
consistency with pandas (#2227)
|
||||
- Fix ``GeoDataFrame.explore()`` producing an error when ``column`` is of boolean dtype
|
||||
(#2403).
|
||||
- Fix an issue where ``GeoDataFrame.to_postgis()`` output the wrong SRID for ESRI
|
||||
authority CRS (#2414).
|
||||
- Fix ``GeoDataFrame.from_dict/from_features`` classmethods using ``GeoDataFrame`` rather
|
||||
than ``cls`` as the constructor.
|
||||
- Fix ``GeoDataFrame.plot()`` producing incorrect colors with mixed geometry types when
|
||||
``colors`` keyword is provided. (#2420)
|
||||
|
||||
Notes on (optional) dependencies:
|
||||
|
||||
- GeoPandas 0.11 drops support for Python 3.7 and pandas 0.25 (the minimum supported
|
||||
pandas version is now 1.0.5). Further, the minimum required versions for the listed
|
||||
dependencies have now changed to shapely 1.7, fiona 1.8.13.post1, pyproj 2.6.1.post1,
|
||||
matplotlib 3.2, mapclassify 2.4.0 (#2358, #2391)
|
||||
|
||||
|
||||
Version 0.10.2 (October 16, 2021)
|
||||
---------------------------------
|
||||
|
||||
Small bug-fix release:
|
||||
|
||||
- Fix regression in `overlay()` in case no geometries are intersecting (but
|
||||
- Fix regression in ``overlay()`` in case no geometries are intersecting (but
|
||||
have overlapping total bounds) (#2172).
|
||||
- Fix regression in `overlay()` with `keep_geom_type=True` in case the
|
||||
- Fix regression in ``overlay()`` with ``keep_geom_type=True`` in case the
|
||||
overlay of two geometries in a GeometryCollection with other geometry types
|
||||
(#2177).
|
||||
- Fix `overlay()` to honor the `keep_geom_type` keyword for the
|
||||
`op="differnce"` case (#2164).
|
||||
- Fix regression in `plot()` with a mapclassify `scheme` in case the
|
||||
- Fix ``overlay()`` to honor the ``keep_geom_type`` keyword for the
|
||||
``op="differnce"`` case (#2164).
|
||||
- Fix regression in ``plot()`` with a mapclassify ``scheme`` in case the
|
||||
formatted legend labels have duplicates (#2166).
|
||||
- Fix a bug in the `explore()` method ignoring the `vmin` and `vmax` keywords
|
||||
- Fix a bug in the ``explore()`` method ignoring the ``vmin`` and ``vmax`` keywords
|
||||
in case they are set to 0 (#2175).
|
||||
- Fix `unary_union` to correctly handle a GeoSeries with missing values (#2181).
|
||||
- Avoid internal deprecation warning in `clip()` (#2179).
|
||||
- Fix ``unary_union`` to correctly handle a GeoSeries with missing values (#2181).
|
||||
- Avoid internal deprecation warning in ``clip()`` (#2179).
|
||||
|
||||
|
||||
Version 0.10.1 (October 8, 2021)
|
||||
@@ -26,8 +141,8 @@ Version 0.10.1 (October 8, 2021)
|
||||
|
||||
Small bug-fix release:
|
||||
|
||||
- Fix regression in `overlay()` with non-overlapping geometries and a
|
||||
non-default `how` (i.e. not "intersection") (#2157).
|
||||
- Fix regression in ``overlay()`` with non-overlapping geometries and a
|
||||
non-default ``how`` (i.e. not "intersection") (#2157).
|
||||
|
||||
|
||||
Version 0.10.0 (October 3, 2021)
|
||||
@@ -35,74 +150,74 @@ Version 0.10.0 (October 3, 2021)
|
||||
|
||||
Highlights of this release:
|
||||
|
||||
- A new `sjoin_nearest()` method to join based on proximity, with the
|
||||
ability to set a maximum search radius (#1865). In addition, the `sindex`
|
||||
- A new ``sjoin_nearest()`` method to join based on proximity, with the
|
||||
ability to set a maximum search radius (#1865). In addition, the ``sindex``
|
||||
attribute gained a new method for a "nearest" spatial index query (#1865,
|
||||
#2053).
|
||||
- A new `explore()` method on GeoDataFrame and GeoSeries with native support
|
||||
- A new ``explore()`` method on GeoDataFrame and GeoSeries with native support
|
||||
for interactive visualization based on folium / leaflet.js (#1953)
|
||||
- The `geopandas.sjoin()`/`overlay()`/`clip()` functions are now also
|
||||
- The ``geopandas.sjoin()``/``overlay()``/``clip()`` functions are now also
|
||||
available as methods on the GeoDataFrame (#2141, #1984, #2150).
|
||||
|
||||
New features and improvements:
|
||||
|
||||
- Add support for pandas' `value_counts()` method for geometry dtype (#2047).
|
||||
- The `explode()` method has a new `ignore_index` keyword (consistent with
|
||||
- Add support for pandas' ``value_counts()`` method for geometry dtype (#2047).
|
||||
- The ``explode()`` method has a new ``ignore_index`` keyword (consistent with
|
||||
pandas' explode method) to reset the index in the result, and a new
|
||||
`index_parts` keywords to control whether a cumulative count indexing the
|
||||
``index_parts`` keywords to control whether a cumulative count indexing the
|
||||
parts of the exploded multi-geometries should be added (#1871).
|
||||
- `points_from_xy()` is now available as a GeoSeries method `from_xy` (#1936).
|
||||
- The `to_file()` method will now attempt to detect the driver (if not
|
||||
- ``points_from_xy()`` is now available as a GeoSeries method ``from_xy`` (#1936).
|
||||
- The ``to_file()`` method will now attempt to detect the driver (if not
|
||||
specified) based on the extension of the provided filename, instead of
|
||||
defaulting to ESRI Shapefile (#1609).
|
||||
- Support for the `storage_options` keyword in `read_parquet()` for
|
||||
- Support for the ``storage_options`` keyword in ``read_parquet()`` for
|
||||
specifying filesystem-specific options (e.g. for S3) based on fsspec (#2107).
|
||||
- The read/write functions now support `~` (user home directory) expansion (#1876).
|
||||
- Support the `convert_dtypes()` method from pandas to preserve the
|
||||
- The read/write functions now support ``~`` (user home directory) expansion (#1876).
|
||||
- Support the ``convert_dtypes()`` method from pandas to preserve the
|
||||
GeoDataFrame class (#2115).
|
||||
- Support WKB values in the hex format in `GeoSeries.from_wkb()` (#2106).
|
||||
- Update the `estimate_utm_crs()` method to handle crossing the antimeridian
|
||||
- Support WKB values in the hex format in ``GeoSeries.from_wkb()`` (#2106).
|
||||
- Update the ``estimate_utm_crs()`` method to handle crossing the antimeridian
|
||||
with pyproj 3.1+ (#2049).
|
||||
- Improved heuristic to decide how many decimals to show in the repr based on
|
||||
whether the CRS is projected or geographic (#1895).
|
||||
- Switched the default for `geocode()` from GeoCode.Farm to the Photon
|
||||
- Switched the default for ``geocode()`` from GeoCode.Farm to the Photon
|
||||
geocoding API (https://photon.komoot.io) (#2007).
|
||||
|
||||
Deprecations and compatibility notes:
|
||||
|
||||
- The `op=` keyword of `sjoin()` to indicate which spatial predicate to use
|
||||
for joining is being deprecated and renamed in favor of a new `predicate=`
|
||||
- The ``op=`` keyword of ``sjoin()`` to indicate which spatial predicate to use
|
||||
for joining is being deprecated and renamed in favor of a new ``predicate=``
|
||||
keyword (#1626).
|
||||
- The `cascaded_union` attribute is deprecated, use `unary_union` instead (#2074).
|
||||
- The ``cascaded_union`` attribute is deprecated, use ``unary_union`` instead (#2074).
|
||||
- Constructing a GeoDataFrame with a duplicated "geometry" column is now
|
||||
disallowed. This can also raise an error in the `pd.concat(.., axis=1)`
|
||||
disallowed. This can also raise an error in the ``pd.concat(.., axis=1)``
|
||||
function if this results in duplicated active geometry columns (#2046).
|
||||
- The `explode()` method currently returns a GeoSeries/GeoDataFrame with a
|
||||
- The ``explode()`` method currently returns a GeoSeries/GeoDataFrame with a
|
||||
MultiIndex, with an additional level with indices of the parts of the
|
||||
exploded multi-geometries. For consistency with pandas, this will change in
|
||||
the future and the new `index_parts` keyword is added to control this.
|
||||
the future and the new ``index_parts`` keyword is added to control this.
|
||||
|
||||
Bug fixes:
|
||||
|
||||
- Fix in the `clip()` function to correctly clip MultiPoints instead of
|
||||
- Fix in the ``clip()`` function to correctly clip MultiPoints instead of
|
||||
leaving them intact when partly outside of the clip bounds (#2148).
|
||||
- Fix `GeoSeries.isna()` to correctly return a boolean Series in case of an
|
||||
- Fix ``GeoSeries.isna()`` to correctly return a boolean Series in case of an
|
||||
empty GeoSeries (#2073).
|
||||
- Fix the GeoDataFrame constructor to preserve the geometry name when the
|
||||
argument is already a GeoDataFrame object (i.e. `GeoDataFrame(gdf)`) (#2138).
|
||||
argument is already a GeoDataFrame object (i.e. ``GeoDataFrame(gdf)``) (#2138).
|
||||
- Fix loss of the values' CRS when setting those values as a column
|
||||
(`GeoDataFrame.__setitem__`) (#1963)
|
||||
- Fix in `GeoDataFrame.apply()` to preserve the active geometry column name
|
||||
(``GeoDataFrame.__setitem__``) (#1963)
|
||||
- Fix in ``GeoDataFrame.apply()`` to preserve the active geometry column name
|
||||
(#1955).
|
||||
- Fix in `sjoin()` to not ignore the suffixes in case of a right-join
|
||||
(`how="right`) (#2065).
|
||||
- Fix `GeoDataFrame.explode()` with a MultiIndex (#1945).
|
||||
- Fix the handling of missing values in `to/from_wkb` and `to_from_wkt` (#1891).
|
||||
- Fix `to_file()` and `to_json()` when DataFrame has duplicate columns to
|
||||
- Fix in ``sjoin()`` to not ignore the suffixes in case of a right-join
|
||||
(``how="right``) (#2065).
|
||||
- Fix ``GeoDataFrame.explode()`` with a MultiIndex (#1945).
|
||||
- Fix the handling of missing values in ``to/from_wkb`` and ``to_from_wkt`` (#1891).
|
||||
- Fix ``to_file()`` and ``to_json()`` when DataFrame has duplicate columns to
|
||||
raise an error (#1900).
|
||||
- Fix bug in the colors shown with user-defined classification scheme (#2019).
|
||||
- Fix handling of the `path_effects` keyword in `plot()` (#2127).
|
||||
- Fix `GeoDataFrame.explode()` to preserve `attrs` (#1935)
|
||||
- Fix handling of the ``path_effects`` keyword in ``plot()`` (#2127).
|
||||
- Fix ``GeoDataFrame.explode()`` to preserve ``attrs`` (#1935)
|
||||
|
||||
Notes on (optional) dependencies:
|
||||
|
||||
@@ -125,110 +240,110 @@ a new logo (#1564, #1579, #1617, #1668, #1731, #1750, #1757, #1759).
|
||||
|
||||
New features and improvements:
|
||||
|
||||
- The `geopandas.read_file` function now accepts more general
|
||||
file-like objects (e.g. `fsspec` open file objects). It will now also
|
||||
- The ``geopandas.read_file`` function now accepts more general
|
||||
file-like objects (e.g. ``fsspec`` open file objects). It will now also
|
||||
automatically recognize zipped files (#1535).
|
||||
- The `GeoDataFrame.plot()` method now provides access to the pandas plotting
|
||||
functionality for the non-geometry columns, either using the `kind` keyword
|
||||
or the accessor method (e.g. `gdf.plot(kind="bar")` or `gdf.plot.bar()`)
|
||||
- The ``GeoDataFrame.plot()`` method now provides access to the pandas plotting
|
||||
functionality for the non-geometry columns, either using the ``kind`` keyword
|
||||
or the accessor method (e.g. ``gdf.plot(kind="bar")`` or ``gdf.plot.bar()``)
|
||||
(#1465).
|
||||
- New `from_wkt()`, `from_wkb()`, `to_wkt()`, `to_wkb()` methods for
|
||||
- New ``from_wkt()``, ``from_wkb()``, ``to_wkt()``, ``to_wkb()`` methods for
|
||||
GeoSeries to construct a GeoSeries from geometries in WKT or WKB
|
||||
representation, or to convert a GeoSeries to a pandas Seriew with WKT or WKB
|
||||
values (#1710).
|
||||
- New `GeoSeries.z` attribute to access the z-coordinates of Point geometries
|
||||
(similar to the existing `.x` and `.y` attributes) (#1773).
|
||||
- The `to_crs()` method now handles missing values (#1618).
|
||||
- Support for pandas' new `.attrs` functionality (#1658).
|
||||
- The `dissolve()` method now allows dissolving by no column (`by=None`) to
|
||||
- New ``GeoSeries.z`` attribute to access the z-coordinates of Point geometries
|
||||
(similar to the existing ``.x`` and ``.y`` attributes) (#1773).
|
||||
- The ``to_crs()`` method now handles missing values (#1618).
|
||||
- Support for pandas' new ``.attrs`` functionality (#1658).
|
||||
- The ``dissolve()`` method now allows dissolving by no column (``by=None``) to
|
||||
create a union of all geometries (single-row GeoDataFrame) (#1568).
|
||||
- New `estimate_utm_crs()` method on GeoSeries/GeoDataFrame to determine the
|
||||
- New ``estimate_utm_crs()`` method on GeoSeries/GeoDataFrame to determine the
|
||||
UTM CRS based on the bounds (#1646).
|
||||
- `GeoDataFrame.from_dict()` now accepts `geometry` and `crs` keywords
|
||||
- ``GeoDataFrame.from_dict()`` now accepts ``geometry`` and ``crs`` keywords
|
||||
(#1619).
|
||||
- `GeoDataFrame.to_postgis()` and `geopandas.read_postgis()` now supports
|
||||
- ``GeoDataFrame.to_postgis()`` and ``geopandas.read_postgis()`` now supports
|
||||
both sqlalchemy engine and connection objects (#1638).
|
||||
- The `GeoDataFrame.explode()` method now allows exploding based on a
|
||||
- The ``GeoDataFrame.explode()`` method now allows exploding based on a
|
||||
non-geometry column, using the pandas implementation (#1720).
|
||||
- Performance improvement in `GeoDataFrame/GeoSeries.explode()` when using
|
||||
- Performance improvement in ``GeoDataFrame/GeoSeries.explode()`` when using
|
||||
the PyGEOS backend (#1693).
|
||||
- The binary operation and predicate methods (eg `intersection()`,
|
||||
`intersects()`) have a new `align` keyword which allows optionally not
|
||||
aligning on the index before performing the operation with `align=False`
|
||||
- The binary operation and predicate methods (eg ``intersection()``,
|
||||
``intersects()``) have a new ``align`` keyword which allows optionally not
|
||||
aligning on the index before performing the operation with ``align=False``
|
||||
(#1668).
|
||||
- The `GeoDataFrame.dissolve()` method now supports all relevant keywords of
|
||||
`groupby()`, i.e. the `level`, `sort`, `observed` and `dropna` keywords
|
||||
- The ``GeoDataFrame.dissolve()`` method now supports all relevant keywords of
|
||||
``groupby()``, i.e. the ``level``, ``sort``, ``observed`` and ``dropna`` keywords
|
||||
(#1845).
|
||||
- The `geopandas.overlay()` function now accepts `make_valid=False` to skip
|
||||
the step to ensure the input geometries are valid using `buffer(0)` (#1802).
|
||||
- The `GeoDataFrame.to_json()` method gained a `drop_id` keyword to
|
||||
- The ``geopandas.overlay()`` function now accepts ``make_valid=False`` to skip
|
||||
the step to ensure the input geometries are valid using ``buffer(0)`` (#1802).
|
||||
- The ``GeoDataFrame.to_json()`` method gained a ``drop_id`` keyword to
|
||||
optionally not write the GeoDataFrame's index as the "id" field in the
|
||||
resulting JSON (#1637).
|
||||
- A new `aspect` keyword in the plotting methods to optionally allow retaining
|
||||
- A new ``aspect`` keyword in the plotting methods to optionally allow retaining
|
||||
the original aspect (#1512)
|
||||
- A new `interval` keyword in the `legend_kwds` group of the `plot()` method
|
||||
- A new ``interval`` keyword in the ``legend_kwds`` group of the ``plot()`` method
|
||||
to control the appearance of the legend labels when using a classification
|
||||
scheme (#1605).
|
||||
- The spatial index of a GeoSeries (accessed with the `sindex` attribute) is
|
||||
- The spatial index of a GeoSeries (accessed with the ``sindex`` attribute) is
|
||||
now stored on the underlying array. This ensures that the spatial index is
|
||||
preserved in more operations where possible, and that multiple geometry
|
||||
columns of a GeoDataFrame can each have a spatial index (#1444).
|
||||
- Addition of a `has_sindex` attribute on the GeoSeries/GeoDataFrame to check
|
||||
- Addition of a ``has_sindex`` attribute on the GeoSeries/GeoDataFrame to check
|
||||
if a spatial index has already been initialized (#1627).
|
||||
- The `geopandas.testing.assert_geoseries_equal()` and `assert_geodataframe_equal()`
|
||||
testing utilities now have a `normalize` keyword (False by default) to
|
||||
- The ``geopandas.testing.assert_geoseries_equal()`` and ``assert_geodataframe_equal()``
|
||||
testing utilities now have a ``normalize`` keyword (False by default) to
|
||||
normalize geometries before comparing for equality (#1826). Those functions
|
||||
now also give a more informative error message when failing (#1808).
|
||||
|
||||
Deprecations and compatibility notes:
|
||||
|
||||
- The `is_ring` attribute currently returns True for Polygons. In the future,
|
||||
- The ``is_ring`` attribute currently returns True for Polygons. In the future,
|
||||
this will be False (#1631). In addition, start to check it for LineStrings
|
||||
and LinearRings (instead of always returning False).
|
||||
- The deprecated `objects` keyword in the `intersection()` method of the
|
||||
`GeoDataFrame/GeoSeries.sindex` spatial index object has been removed
|
||||
- The deprecated ``objects`` keyword in the ``intersection()`` method of the
|
||||
``GeoDataFrame/GeoSeries.sindex`` spatial index object has been removed
|
||||
(#1444).
|
||||
|
||||
Bug fixes:
|
||||
|
||||
- Fix regression in the `plot()` method raising an error with empty
|
||||
- Fix regression in the ``plot()`` method raising an error with empty
|
||||
geometries (#1702, #1828).
|
||||
- Fix `geopandas.overlay()` to preserve geometries of the correct type which
|
||||
- Fix ``geopandas.overlay()`` to preserve geometries of the correct type which
|
||||
are nested within a GeometryCollection as a result of the overlay
|
||||
operation (#1582). In addition, a warning will now be raised if geometries
|
||||
of different type are dropped from the result (#1554).
|
||||
- Fix the repr of an empty GeoSeries to not show spurious warnings (#1673).
|
||||
- Fix the `.crs` for empty GeoDataFrames (#1560).
|
||||
- Fix `geopandas.clip` to preserve the correct geometry column name (#1566).
|
||||
- Fix bug in `plot()` method when using `legend_kwds` with multiple subplots
|
||||
- Fix the ``.crs`` for empty GeoDataFrames (#1560).
|
||||
- Fix ``geopandas.clip`` to preserve the correct geometry column name (#1566).
|
||||
- Fix bug in ``plot()`` method when using ``legend_kwds`` with multiple subplots
|
||||
(#1583)
|
||||
- Fix spurious warning with `missing_kwds` keyword of the `plot()` method
|
||||
- Fix spurious warning with ``missing_kwds`` keyword of the ``plot()`` method
|
||||
when there are no areas with missing data (#1600).
|
||||
- Fix the `plot()` method to correctly align values passed to the `column`
|
||||
- Fix the ``plot()`` method to correctly align values passed to the ``column``
|
||||
keyword as a pandas Series (#1670).
|
||||
- Fix bug in plotting MultiPoints when passing values to determine the color
|
||||
(#1694)
|
||||
- The `rename_geometry()` method now raises a more informative error message
|
||||
- The ``rename_geometry()`` method now raises a more informative error message
|
||||
when a duplicate column name is used (#1602).
|
||||
- Fix `explode()` method to preserve the CRS (#1655)
|
||||
- Fix the `GeoSeries.apply()` method to again accept the `convert_dtype`
|
||||
- Fix ``explode()`` method to preserve the CRS (#1655)
|
||||
- Fix the ``GeoSeries.apply()`` method to again accept the ``convert_dtype``
|
||||
keyword to be consistent with pandas (#1636).
|
||||
- Fix `GeoDataFrame.apply()` to preserve the CRS when possible (#1848).
|
||||
- Fix bug in containment test as `geom in geoseries` (#1753).
|
||||
- The `shift()` method of a GeoSeries/GeoDataFrame now preserves the CRS
|
||||
- Fix ``GeoDataFrame.apply()`` to preserve the CRS when possible (#1848).
|
||||
- Fix bug in containment test as ``geom in geoseries`` (#1753).
|
||||
- The ``shift()`` method of a GeoSeries/GeoDataFrame now preserves the CRS
|
||||
(#1744).
|
||||
- The PostGIS IO functionality now quotes table names to ensure it works with
|
||||
case-sensitive names (#1825).
|
||||
- Fix the `GeoSeries` constructor without passing data but only an index (#1798).
|
||||
- Fix the ``GeoSeries`` constructor without passing data but only an index (#1798).
|
||||
|
||||
Notes on (optional) dependencies:
|
||||
|
||||
- GeoPandas 0.9.0 dropped support for Python 3.5. Further, the minimum
|
||||
required versions are pandas 0.24, numpy 1.15 and shapely 1.6 and fiona 1.8.
|
||||
- The `descartes` package is no longer required for plotting polygons. This
|
||||
- The ``descartes`` package is no longer required for plotting polygons. This
|
||||
functionality is now included by default in GeoPandas itself, when
|
||||
matplotlib is available (#1677).
|
||||
- Fiona is now only imported when used in `read_file`/`to_file`. This means
|
||||
- Fiona is now only imported when used in ``read_file``/``to_file``. This means
|
||||
you can now force geopandas to install without fiona installed (although it
|
||||
is still a default requirement) (#1775).
|
||||
- Compatibility with the upcoming Shapely 1.8 (#1659, #1662, #1819).
|
||||
@@ -245,10 +360,10 @@ Version 0.8.1 (July 15, 2020)
|
||||
|
||||
Small bug-fix release:
|
||||
|
||||
- Fix a regression in the `plot()` method when visualizing with a
|
||||
- Fix a regression in the ``plot()`` method when visualizing with a
|
||||
JenksCaspallSampled or FisherJenksSampled scheme (#1486).
|
||||
- Fix spurious warning in `GeoDataFrame.to_postgis` (#1497).
|
||||
- Fix the un-pickling with `pd.read_pickle` of files written with older
|
||||
- Fix spurious warning in ``GeoDataFrame.to_postgis`` (#1497).
|
||||
- Fix the un-pickling with ``pd.read_pickle`` of files written with older
|
||||
GeoPandas versions (#1511).
|
||||
|
||||
|
||||
@@ -258,7 +373,7 @@ Version 0.8.0 (June 24, 2020)
|
||||
**Experimental**: optional use of PyGEOS to speed up spatial operations (#1155).
|
||||
PyGEOS is a faster alternative for Shapely (being contributed back to a future
|
||||
version of Shapely), and is used in element-wise spatial operations and for
|
||||
spatial index in e.g. `sjoin` (#1343, #1401, #1421, #1427, #1428). See the
|
||||
spatial index in e.g. ``sjoin`` (#1343, #1401, #1421, #1427, #1428). See the
|
||||
[installation docs](https://geopandas.readthedocs.io/en/latest/install.html#using-the-optional-pygeos-dependency)
|
||||
for more info and how to enable it.
|
||||
|
||||
@@ -266,16 +381,16 @@ New features and improvements:
|
||||
|
||||
- IO enhancements:
|
||||
|
||||
- New `GeoDataFrame.to_postgis()` method to write to PostGIS database (#1248).
|
||||
- New ``GeoDataFrame.to_postgis()`` method to write to PostGIS database (#1248).
|
||||
- New Apache Parquet and Feather file format support (#1180, #1435)
|
||||
- Allow appending to files with `GeoDataFrame.to_file` (#1229).
|
||||
- Add support for the `ignore_geometry` keyword in `read_file` to only read
|
||||
- Allow appending to files with ``GeoDataFrame.to_file`` (#1229).
|
||||
- Add support for the ``ignore_geometry`` keyword in ``read_file`` to only read
|
||||
the attribute data. If set to True, a pandas DataFrame without geometry is
|
||||
returned (#1383).
|
||||
- `geopandas.read_file` now supports reading from file-like objects (#1329).
|
||||
- `GeoDataFrame.to_file` now supports specifying the CRS to write to the file
|
||||
- ``geopandas.read_file`` now supports reading from file-like objects (#1329).
|
||||
- ``GeoDataFrame.to_file`` now supports specifying the CRS to write to the file
|
||||
(#802). By default it still uses the CRS of the GeoDataFrame.
|
||||
- New `chunksize` keyword in `geopandas.read_postgis` to read a query in
|
||||
- New ``chunksize`` keyword in ``geopandas.read_postgis`` to read a query in
|
||||
chunks (#1123).
|
||||
|
||||
- Improvements related to geometry columns and CRS:
|
||||
@@ -283,29 +398,29 @@ New features and improvements:
|
||||
- Any column of the GeoDataFrame that has a "geometry" dtype is now returned
|
||||
as a GeoSeries. This means that when having multiple geometry columns, not
|
||||
only the "active" geometry column is returned as a GeoSeries, but also
|
||||
accessing another geometry column (`gdf["other_geom_column"]`) gives a
|
||||
accessing another geometry column (``gdf["other_geom_column"]``) gives a
|
||||
GeoSeries (#1336).
|
||||
- Multiple geometry columns in a GeoDataFrame can now each have a different
|
||||
CRS. The global `gdf.crs` attribute continues to returns the CRS of the
|
||||
CRS. The global ``gdf.crs`` attribute continues to returns the CRS of the
|
||||
"active" geometry column. The CRS of other geometry columns can be accessed
|
||||
from the column itself (eg `gdf["other_geom_column"].crs`) (#1339).
|
||||
- New `set_crs()` method on GeoDataFrame/GeoSeries to set the CRS of naive
|
||||
from the column itself (eg ``gdf["other_geom_column"].crs``) (#1339).
|
||||
- New ``set_crs()`` method on GeoDataFrame/GeoSeries to set the CRS of naive
|
||||
geometries (#747).
|
||||
|
||||
- Improvements related to plotting:
|
||||
|
||||
- The y-axis is now scaled depending on the center of the plot when using a
|
||||
geographic CRS, instead of using an equal aspect ratio (#1290).
|
||||
- When passing a column of categorical dtype to the `column=` keyword of the
|
||||
GeoDataFrame `plot()`, we now honor all categories and its order (#1483).
|
||||
In addition, a new `categories` keyword allows to specify all categories
|
||||
- When passing a column of categorical dtype to the ``column=`` keyword of the
|
||||
GeoDataFrame ``plot()``, we now honor all categories and its order (#1483).
|
||||
In addition, a new ``categories`` keyword allows to specify all categories
|
||||
and their order otherwise (#1173).
|
||||
- For choropleths using a classification scheme (using `scheme=`), the
|
||||
`legend_kwds` accept two new keywords to control the formatting of the
|
||||
legend: `fmt` with a format string for the bin edges (#1253), and `labels`
|
||||
- For choropleths using a classification scheme (using ``scheme=``), the
|
||||
``legend_kwds`` accept two new keywords to control the formatting of the
|
||||
legend: ``fmt`` with a format string for the bin edges (#1253), and ``labels``
|
||||
to pass fully custom class labels (#1302).
|
||||
|
||||
- New `covers()` and `covered_by()` methods on GeoSeries/GeoDataframe for the
|
||||
- New ``covers()`` and ``covered_by()`` methods on GeoSeries/GeoDataframe for the
|
||||
equivalent spatial predicates (#1460, #1462).
|
||||
- GeoPandas now warns when using distance-based methods with data in a
|
||||
geographic projection (#1378).
|
||||
@@ -314,35 +429,35 @@ Deprecations:
|
||||
|
||||
- When constructing a GeoSeries or GeoDataFrame from data that already has a
|
||||
CRS, a deprecation warning is raised when both CRS don't match, and in the
|
||||
future an error will be raised in such a case. You can use the new `set_crs`
|
||||
future an error will be raised in such a case. You can use the new ``set_crs``
|
||||
method to override an existing CRS. See
|
||||
[the docs](https://geopandas.readthedocs.io/en/latest/projections.html#projection-for-multiple-geometry-columns).
|
||||
- The helper functions in the `geopandas.plotting` module are deprecated for
|
||||
- The helper functions in the ``geopandas.plotting`` module are deprecated for
|
||||
public usage (#656).
|
||||
- The `geopandas.io` functions are deprecated, use the top-level `read_file` and
|
||||
`to_file` instead (#1407).
|
||||
- The set operators (`&`, `|`, `^`, `-`) are deprecated, use the
|
||||
`intersection()`, `union()`, `symmetric_difference()`, `difference()` methods
|
||||
- The ``geopandas.io`` functions are deprecated, use the top-level ``read_file`` and
|
||||
``to_file`` instead (#1407).
|
||||
- The set operators (``&``, ``|``, ``^``, ``-``) are deprecated, use the
|
||||
``intersection()``, ``union()``, ``symmetric_difference()``, ``difference()`` methods
|
||||
instead (#1255).
|
||||
- The `sindex` for empty dataframe will in the future return an empty spatial
|
||||
index instead of `None` (#1438).
|
||||
- The `objects` keyword in the `intersection` method of the spatial index
|
||||
returned by the `sindex` attribute is deprecated and will be removed in the
|
||||
- The ``sindex`` for empty dataframe will in the future return an empty spatial
|
||||
index instead of ``None`` (#1438).
|
||||
- The ``objects`` keyword in the ``intersection`` method of the spatial index
|
||||
returned by the ``sindex`` attribute is deprecated and will be removed in the
|
||||
future (#1440).
|
||||
|
||||
Bug fixes:
|
||||
|
||||
- Fix the `total_bounds()` method to ignore missing and empty geometries (#1312).
|
||||
- Fix `geopandas.clip` when masking with non-overlapping area resulting in an
|
||||
- Fix the ``total_bounds()`` method to ignore missing and empty geometries (#1312).
|
||||
- Fix ``geopandas.clip`` when masking with non-overlapping area resulting in an
|
||||
empty GeoDataFrame (#1309, #1365).
|
||||
- Fix error in `geopandas.sjoin` when joining on an empty geometry column (#1318).
|
||||
- CRS related fixes: `pandas.concat` preserves CRS when concatenating GeoSeries
|
||||
objects (#1340), preserve the CRS in `geopandas.clip` (#1362) and in
|
||||
`GeoDataFrame.astype` (#1366).
|
||||
- Fix bug in `GeoDataFrame.explode()` when 'level_1' is one of the column names
|
||||
- Fix error in ``geopandas.sjoin`` when joining on an empty geometry column (#1318).
|
||||
- CRS related fixes: ``pandas.concat`` preserves CRS when concatenating GeoSeries
|
||||
objects (#1340), preserve the CRS in ``geopandas.clip`` (#1362) and in
|
||||
``GeoDataFrame.astype`` (#1366).
|
||||
- Fix bug in ``GeoDataFrame.explode()`` when 'level_1' is one of the column names
|
||||
(#1445).
|
||||
- Better error message when rtree is not installed (#1425).
|
||||
- Fix bug in `GeoSeries.equals()` (#1451).
|
||||
- Fix bug in ``GeoSeries.equals()`` (#1451).
|
||||
- Fix plotting of multi-part geometries with additional style keywords (#1385).
|
||||
|
||||
And we now have a [Code of Conduct](https://github.com/geopandas/geopandas/blob/main/CODE_OF_CONDUCT.md)!
|
||||
@@ -357,7 +472,7 @@ Version 0.7.0 (February 16, 2020)
|
||||
Support for Python 2.7 has been dropped. GeoPandas now works with Python >= 3.5.
|
||||
|
||||
The important API change of this release is that GeoPandas now requires
|
||||
PROJ > 6 and pyproj > 2.2, and that the `.crs` attribute of a GeoSeries and
|
||||
PROJ > 6 and pyproj > 2.2, and that the ``.crs`` attribute of a GeoSeries and
|
||||
GeoDataFrame no longer stores the CRS information as a proj4 string or dict,
|
||||
but as a ``pyproj.CRS`` object (#1101).
|
||||
|
||||
@@ -368,32 +483,32 @@ in the documentation.
|
||||
|
||||
Other API changes;
|
||||
|
||||
- The `GeoDataFrame.to_file` method will now also write the GeoDataFrame index
|
||||
- The ``GeoDataFrame.to_file`` method will now also write the GeoDataFrame index
|
||||
to the file, if the index is named and/or non-integer. You can use the
|
||||
`index=True/False` keyword to overwrite this default inference (#1059).
|
||||
``index=True/False`` keyword to overwrite this default inference (#1059).
|
||||
|
||||
New features and improvements:
|
||||
|
||||
- A new `geopandas.clip` function to clip a GeoDataFrame to the spatial extent
|
||||
- A new ``geopandas.clip`` function to clip a GeoDataFrame to the spatial extent
|
||||
of another shape (#1128).
|
||||
- The `geopandas.overlay` function now works for all geometry types, including
|
||||
- The ``geopandas.overlay`` function now works for all geometry types, including
|
||||
points and linestrings in addition to polygons (#1110).
|
||||
- The `plot()` method gained support for missing values (in the column that
|
||||
- The ``plot()`` method gained support for missing values (in the column that
|
||||
determines the colors). By default it doesn't plot the corresponding
|
||||
geometries, but using the new `missing_kwds` argument you can specify how to
|
||||
geometries, but using the new ``missing_kwds`` argument you can specify how to
|
||||
style those geometries (#1156).
|
||||
- The `plot()` method now also supports plotting GeometryCollection and
|
||||
- The ``plot()`` method now also supports plotting GeometryCollection and
|
||||
LinearRing objects (#1225).
|
||||
- Added support for filtering with a geometry or reading a subset of the rows in
|
||||
`geopandas.read_file` (#1160).
|
||||
``geopandas.read_file`` (#1160).
|
||||
- Added support for the new nullable integer data type of pandas in
|
||||
`GeoDataFrame.to_file` (#1220).
|
||||
``GeoDataFrame.to_file`` (#1220).
|
||||
|
||||
Bug fixes:
|
||||
|
||||
- `GeoSeries.reset_index()` now correctly results in a GeoDataFrame instead of DataFrame (#1252).
|
||||
- Fixed the `geopandas.sjoin` function to handle MultiIndex correctly (#1159).
|
||||
- Fixed the `geopandas.sjoin` function to preserve the index name of the left GeoDataFrame (#1150).
|
||||
- ``GeoSeries.reset_index()`` now correctly results in a GeoDataFrame instead of DataFrame (#1252).
|
||||
- Fixed the ``geopandas.sjoin`` function to handle MultiIndex correctly (#1159).
|
||||
- Fixed the ``geopandas.sjoin`` function to preserve the index name of the left GeoDataFrame (#1150).
|
||||
|
||||
|
||||
Version 0.6.3 (February 6, 2020)
|
||||
@@ -402,7 +517,7 @@ Version 0.6.3 (February 6, 2020)
|
||||
Small bug-fix release:
|
||||
|
||||
- Compatibility with Shapely 1.7 and pandas 1.0 (#1244).
|
||||
- Fix `GeoDataFrame.fillna` to accept non-geometry values again when there are
|
||||
- Fix ``GeoDataFrame.fillna`` to accept non-geometry values again when there are
|
||||
no missing values in the geometry column. This should make it easier to fill
|
||||
the numerical columns of the GeoDataFrame (#1279).
|
||||
|
||||
@@ -425,8 +540,8 @@ Version 0.6.1 (October 12, 2019)
|
||||
|
||||
Small bug-fix release fixing a few regressions:
|
||||
|
||||
- Fix `astype` when converting to string with Multi geometries (#1145) or when converting a dataframe without geometries (#1144).
|
||||
- Fix `GeoSeries.fillna` to accept `np.nan` again (#1149).
|
||||
- Fix ``astype`` when converting to string with Multi geometries (#1145) or when converting a dataframe without geometries (#1144).
|
||||
- Fix ``GeoSeries.fillna`` to accept ``np.nan`` again (#1149).
|
||||
|
||||
|
||||
Version 0.6.0 (September 27, 2019)
|
||||
@@ -438,35 +553,35 @@ API changes:
|
||||
|
||||
- A refactor of the internals based on the pandas ExtensionArray interface (#1000). The main user visible changes are:
|
||||
|
||||
- The `.dtype` of a GeoSeries is now a `'geometry'` dtype (and no longer a numpy `object` dtype).
|
||||
- The `.values` of a GeoSeries now returns a custom `GeometryArray`, and no longer a numpy array. To get back a numpy array of Shapely scalars, you can convert explicitly using `np.asarray(..)`.
|
||||
- The ``.dtype`` of a GeoSeries is now a ``'geometry'`` dtype (and no longer a numpy ``object`` dtype).
|
||||
- The ``.values`` of a GeoSeries now returns a custom ``GeometryArray``, and no longer a numpy array. To get back a numpy array of Shapely scalars, you can convert explicitly using ``np.asarray(..)``.
|
||||
|
||||
- The `GeoSeries` constructor now raises a warning when passed non-geometry data. Currently the constructor falls back to return a pandas `Series`, but in the future this will raise an error (#1085).
|
||||
- The ``GeoSeries`` constructor now raises a warning when passed non-geometry data. Currently the constructor falls back to return a pandas ``Series``, but in the future this will raise an error (#1085).
|
||||
- The missing value handling has been changed to now separate the concepts of missing geometries and empty geometries (#601, 1062). In practice this means that (see [the docs](https://geopandas.readthedocs.io/en/v0.6.0/missing_empty.html) for more details):
|
||||
|
||||
- `GeoSeries.isna` now considers only missing values, and if you want to check for empty geometries, you can use `GeoSeries.is_empty` (`GeoDataFrame.isna` already only looked at missing values).
|
||||
- `GeoSeries.dropna` now actually drops missing values (before it didn't drop either missing or empty geometries)
|
||||
- `GeoSeries.fillna` only fills missing values (behaviour unchanged).
|
||||
- `GeoSeries.align` uses missing values instead of empty geometries by default to fill non-matching index entries.
|
||||
- ``GeoSeries.isna`` now considers only missing values, and if you want to check for empty geometries, you can use ``GeoSeries.is_empty`` (``GeoDataFrame.isna`` already only looked at missing values).
|
||||
- ``GeoSeries.dropna`` now actually drops missing values (before it didn't drop either missing or empty geometries)
|
||||
- ``GeoSeries.fillna`` only fills missing values (behaviour unchanged).
|
||||
- ``GeoSeries.align`` uses missing values instead of empty geometries by default to fill non-matching index entries.
|
||||
|
||||
New features and improvements:
|
||||
|
||||
- Addition of a `GeoSeries.affine_transform` method, equivalent of Shapely's function (#1008).
|
||||
- Addition of a `GeoDataFrame.rename_geometry` method to easily rename the active geometry column (#1053).
|
||||
- Addition of `geopandas.show_versions()` function, which can be used to give an overview of the installed libraries in bug reports (#899).
|
||||
- The `legend_kwds` keyword of the `plot()` method can now also be used to specify keywords for the color bar (#1102).
|
||||
- Performance improvement in the `sjoin()` operation by re-using existing spatial index of the input dataframes, if available (#789).
|
||||
- Addition of a ``GeoSeries.affine_transform`` method, equivalent of Shapely's function (#1008).
|
||||
- Addition of a ``GeoDataFrame.rename_geometry`` method to easily rename the active geometry column (#1053).
|
||||
- Addition of ``geopandas.show_versions()`` function, which can be used to give an overview of the installed libraries in bug reports (#899).
|
||||
- The ``legend_kwds`` keyword of the ``plot()`` method can now also be used to specify keywords for the color bar (#1102).
|
||||
- Performance improvement in the ``sjoin()`` operation by re-using existing spatial index of the input dataframes, if available (#789).
|
||||
- Updated documentation to work with latest version of geoplot and contextily (#1044, #1088).
|
||||
- A new ``geopandas.options`` configuration, with currently a single option to control the display precision of the coordinates (``options.display_precision``). The default is now to show less coordinates (3 for projected and 5 for geographic coordinates), but the default can be overridden with the option.
|
||||
|
||||
Bug fixes:
|
||||
|
||||
- Also try to use `pysal` instead of `mapclassify` if available (#1082).
|
||||
- The `GeoDataFrame.astype()` method now correctly returns a `GeoDataFrame` if the geometry column is preserved (#1009).
|
||||
- The `to_crs` method now uses `always_xy=True` to ensure correct lon/lat order handling for pyproj>=2.2.0 (#1122).
|
||||
- Fixed passing list-like colors in the `plot()` method in case of "multi" geometries (#1119).
|
||||
- Fixed the coloring of shapes and colorbar when passing a custom `norm` in the `plot()` method (#1091, #1089).
|
||||
- Fixed `GeoDataFrame.to_file` to preserve VFS file paths (e.g. when a "s3://" path is specified) (#1124).
|
||||
- Also try to use ``pysal`` instead of ``mapclassify`` if available (#1082).
|
||||
- The ``GeoDataFrame.astype()`` method now correctly returns a ``GeoDataFrame`` if the geometry column is preserved (#1009).
|
||||
- The ``to_crs`` method now uses ``always_xy=True`` to ensure correct lon/lat order handling for pyproj>=2.2.0 (#1122).
|
||||
- Fixed passing list-like colors in the ``plot()`` method in case of "multi" geometries (#1119).
|
||||
- Fixed the coloring of shapes and colorbar when passing a custom ``norm`` in the ``plot()`` method (#1091, #1089).
|
||||
- Fixed ``GeoDataFrame.to_file`` to preserve VFS file paths (e.g. when a "s3://" path is specified) (#1124).
|
||||
- Fixed failing case in ``geopandas.sjoin`` with empty geometries (#1138).
|
||||
|
||||
|
||||
@@ -483,140 +598,136 @@ Version 0.5.0 (April 25, 2019)
|
||||
|
||||
Improvements:
|
||||
|
||||
* Significant performance improvement (around 10x) for `GeoDataFrame.iterfeatures`,
|
||||
which also improves `GeoDataFrame.to_file` (#864).
|
||||
* File IO enhancements based on Fiona 1.8:
|
||||
- Significant performance improvement (around 10x) for ``GeoDataFrame.iterfeatures``,
|
||||
which also improves ``GeoDataFrame.to_file`` (#864).
|
||||
- File IO enhancements based on Fiona 1.8:
|
||||
|
||||
* Support for writing bool dtype (#855) and datetime dtype, if the file format supports it (#728).
|
||||
* Support for writing dataframes with multiple geometry types, if the file format allows it (e.g. GeoJSON for all types, or ESRI Shapefile for Polygon+MultiPolygon) (#827, #867, #870).
|
||||
- Support for writing bool dtype (#855) and datetime dtype, if the file format supports it (#728).
|
||||
- Support for writing dataframes with multiple geometry types, if the file format allows it (e.g. GeoJSON for all types, or ESRI Shapefile for Polygon+MultiPolygon) (#827, #867, #870).
|
||||
|
||||
* Compatibility with pyproj >= 2 (#962).
|
||||
* A new `geopandas.points_from_xy()` helper function to convert x and y coordinates to Point objects (#896).
|
||||
* The `buffer` and `interpolate` methods now accept an array-like to specify a variable distance for each geometry (#781).
|
||||
* Addition of a `relate` method, corresponding to the shapely method that returns the DE-9IM matrix (#853).
|
||||
* Plotting improvements:
|
||||
- Compatibility with pyproj >= 2 (#962).
|
||||
- A new ``geopandas.points_from_xy()`` helper function to convert x and y coordinates to Point objects (#896).
|
||||
- The ``buffer`` and ``interpolate`` methods now accept an array-like to specify a variable distance for each geometry (#781).
|
||||
- Addition of a ``relate`` method, corresponding to the shapely method that returns the DE-9IM matrix (#853).
|
||||
- Plotting improvements:
|
||||
|
||||
* Performance improvement in plotting by only flattening the geometries if there are actually 'Multi' geometries (#785).
|
||||
* Choropleths: access to all `mapclassify` classification schemes and addition of the `classification_kwds` keyword in the `plot` method to specify options for the scheme (#876).
|
||||
* Ability to specify a matplotlib axes object on which to plot the color bar with the `cax` keyword, in order to have more control over the color bar placement (#894).
|
||||
- Performance improvement in plotting by only flattening the geometries if there are actually 'Multi' geometries (#785).
|
||||
- Choropleths: access to all ``mapclassify`` classification schemes and addition of the ``classification_kwds`` keyword in the ``plot`` method to specify options for the scheme (#876).
|
||||
- Ability to specify a matplotlib axes object on which to plot the color bar with the ``cax`` keyword, in order to have more control over the color bar placement (#894).
|
||||
|
||||
* Changed the default provider in ``geopandas.tools.geocode`` from Google (now requires an API key) to Geocode.Farm (#907, #975).
|
||||
- Changed the default provider in ``geopandas.tools.geocode`` from Google (now requires an API key) to Geocode.Farm (#907, #975).
|
||||
|
||||
Bug fixes:
|
||||
|
||||
- Remove the edge in the legend marker (#807).
|
||||
- Fix the `align` method to preserve the CRS (#829).
|
||||
- Fix `geopandas.testing.assert_geodataframe_equal` to correctly compare left and right dataframes (#810).
|
||||
- Fix the ``align`` method to preserve the CRS (#829).
|
||||
- Fix ``geopandas.testing.assert_geodataframe_equal`` to correctly compare left and right dataframes (#810).
|
||||
- Fix in choropleth mapping when the values contain missing values (#877).
|
||||
- Better error message in `sjoin` if the input is not a GeoDataFrame (#842).
|
||||
- Fix in `read_postgis` to handle nullable (missing) geometries (#856).
|
||||
- Correctly passing through the `parse_dates` keyword in `read_postgis` to the underlying pandas method (#860).
|
||||
- Better error message in ``sjoin`` if the input is not a GeoDataFrame (#842).
|
||||
- Fix in ``read_postgis`` to handle nullable (missing) geometries (#856).
|
||||
- Correctly passing through the ``parse_dates`` keyword in ``read_postgis`` to the underlying pandas method (#860).
|
||||
- Fixed the shape of Antarctica in the included demo dataset 'naturalearth_lowres'
|
||||
(by updating to the latest version) (#804).
|
||||
|
||||
|
||||
Version 0.4.1 (March 5, 2019)
|
||||
-----------------------------
|
||||
|
||||
Small bug-fix release for compatibility with the latest Fiona and PySAL
|
||||
releases:
|
||||
|
||||
* Compatibility with Fiona 1.8: fix deprecation warning (#854).
|
||||
* Compatibility with PySAL 2.0: switched to `mapclassify` instead of `PySAL` as
|
||||
dependency for choropleth mapping with the `scheme` keyword (#872).
|
||||
* Fix for new `overlay` implementation in case the intersection is empty (#800).
|
||||
|
||||
- Compatibility with Fiona 1.8: fix deprecation warning (#854).
|
||||
- Compatibility with PySAL 2.0: switched to ``mapclassify`` instead of ``PySAL`` as
|
||||
dependency for choropleth mapping with the ``scheme`` keyword (#872).
|
||||
- Fix for new ``overlay`` implementation in case the intersection is empty (#800).
|
||||
|
||||
Version 0.4.0 (July 15, 2018)
|
||||
-----------------------------
|
||||
|
||||
Improvements:
|
||||
|
||||
* Improved `overlay` function (better performance, several incorrect behaviours fixed) (#429)
|
||||
* Pass keywords to control legend behavior (`legend_kwds`) to `plot` (#434)
|
||||
* Add basic support for reading remote datasets in `read_file` (#531)
|
||||
* Pass kwargs for `buffer` operation on GeoSeries (#535)
|
||||
* Expose all geopy services as options in geocoding (#550)
|
||||
* Faster write speeds to GeoPackage (#605)
|
||||
* Permit `read_file` filtering with a bounding box from a GeoDataFrame (#613)
|
||||
* Set CRS on GeoDataFrame returned by `read_postgis` (#627)
|
||||
* Permit setting markersize for Point GeoSeries plots with column values (#633)
|
||||
* Started an example gallery (#463, #690, #717)
|
||||
* Support for plotting MultiPoints (#683)
|
||||
* Testing functionality (e.g. `assert_geodataframe_equal`) is now publicly exposed (#707)
|
||||
* Add `explode` method to GeoDataFrame (similar to the GeoSeries method) (#671)
|
||||
* Set equal aspect on active axis on multi-axis figures (#718)
|
||||
* Pass array of values to column argument in `plot` (#770)
|
||||
- Improved ``overlay`` function (better performance, several incorrect behaviours fixed) (#429)
|
||||
- Pass keywords to control legend behavior (``legend_kwds``) to ``plot`` (#434)
|
||||
- Add basic support for reading remote datasets in ``read_file`` (#531)
|
||||
- Pass kwargs for ``buffer`` operation on GeoSeries (#535)
|
||||
- Expose all geopy services as options in geocoding (#550)
|
||||
- Faster write speeds to GeoPackage (#605)
|
||||
- Permit ``read_file`` filtering with a bounding box from a GeoDataFrame (#613)
|
||||
- Set CRS on GeoDataFrame returned by ``read_postgis`` (#627)
|
||||
- Permit setting markersize for Point GeoSeries plots with column values (#633)
|
||||
- Started an example gallery (#463, #690, #717)
|
||||
- Support for plotting MultiPoints (#683)
|
||||
- Testing functionality (e.g. ``assert_geodataframe_equal``) is now publicly exposed (#707)
|
||||
- Add ``explode`` method to GeoDataFrame (similar to the GeoSeries method) (#671)
|
||||
- Set equal aspect on active axis on multi-axis figures (#718)
|
||||
- Pass array of values to column argument in ``plot`` (#770)
|
||||
|
||||
Bug fixes:
|
||||
|
||||
* Ensure that colorbars are plotted on the correct axis (#523)
|
||||
* Handle plotting empty GeoDataFrame (#571)
|
||||
* Save z-dimension when writing files (#652)
|
||||
* Handle reading empty shapefiles (#653)
|
||||
* Correct dtype for empty result of spatial operations (#685)
|
||||
* Fix empty `sjoin` handling for pandas>=0.23 (#762)
|
||||
|
||||
- Ensure that colorbars are plotted on the correct axis (#523)
|
||||
- Handle plotting empty GeoDataFrame (#571)
|
||||
- Save z-dimension when writing files (#652)
|
||||
- Handle reading empty shapefiles (#653)
|
||||
- Correct dtype for empty result of spatial operations (#685)
|
||||
- Fix empty ``sjoin`` handling for pandas>=0.23 (#762)
|
||||
|
||||
Version 0.3.0 (August 29, 2017)
|
||||
-------------------------------
|
||||
|
||||
Improvements:
|
||||
|
||||
* Improve plotting performance using ``matplotlib.collections`` (#267)
|
||||
* Improve default plotting appearance. The defaults now follow the new matplotlib defaults (#318, #502, #510)
|
||||
* Provide access to x/y coordinates as attributes for Point GeoSeries (#383)
|
||||
* Make the NYBB dataset available through ``geopandas.datasets`` (#384)
|
||||
* Enable ``sjoin`` on non-integer-index GeoDataFrames (#422)
|
||||
* Add ``cx`` indexer to GeoDataFrame (#482)
|
||||
* ``GeoDataFrame.from_features`` now also accepts a Feature Collection (#225, #507)
|
||||
* Use index label instead of integer id in output of ``iterfeatures`` and
|
||||
- Improve plotting performance using ``matplotlib.collections`` (#267)
|
||||
- Improve default plotting appearance. The defaults now follow the new matplotlib defaults (#318, #502, #510)
|
||||
- Provide access to x/y coordinates as attributes for Point GeoSeries (#383)
|
||||
- Make the NYBB dataset available through ``geopandas.datasets`` (#384)
|
||||
- Enable ``sjoin`` on non-integer-index GeoDataFrames (#422)
|
||||
- Add ``cx`` indexer to GeoDataFrame (#482)
|
||||
- ``GeoDataFrame.from_features`` now also accepts a Feature Collection (#225, #507)
|
||||
- Use index label instead of integer id in output of ``iterfeatures`` and
|
||||
``to_json`` (#421)
|
||||
* Return empty data frame rather than raising an error when performing a spatial join with non overlapping geodataframes (#335)
|
||||
- Return empty data frame rather than raising an error when performing a spatial join with non overlapping geodataframes (#335)
|
||||
|
||||
Bug fixes:
|
||||
|
||||
* Compatibility with shapely 1.6.0 (#512)
|
||||
* Fix ``fiona.filter`` results when bbox is not None (#372)
|
||||
* Fix ``dissolve`` to retain CRS (#389)
|
||||
* Fix ``cx`` behavior when using index of 0 (#478)
|
||||
* Fix display of lower bin in legend label of choropleth plots using a PySAL scheme (#450)
|
||||
|
||||
- Compatibility with shapely 1.6.0 (#512)
|
||||
- Fix ``fiona.filter`` results when bbox is not None (#372)
|
||||
- Fix ``dissolve`` to retain CRS (#389)
|
||||
- Fix ``cx`` behavior when using index of 0 (#478)
|
||||
- Fix display of lower bin in legend label of choropleth plots using a PySAL scheme (#450)
|
||||
|
||||
Version 0.2.0
|
||||
-------------
|
||||
|
||||
Improvements:
|
||||
|
||||
* Complete overhaul of the documentation
|
||||
* Addition of ``overlay`` to perform spatial overlays with polygons (#142)
|
||||
* Addition of ``sjoin`` to perform spatial joins (#115, #145, #188)
|
||||
* Addition of ``__geo_interface__`` that returns a python data structure
|
||||
- Complete overhaul of the documentation
|
||||
- Addition of ``overlay`` to perform spatial overlays with polygons (#142)
|
||||
- Addition of ``sjoin`` to perform spatial joins (#115, #145, #188)
|
||||
- Addition of ``__geo_interface__`` that returns a python data structure
|
||||
to represent the ``GeoSeries`` as a GeoJSON-like ``FeatureCollection`` (#116)
|
||||
and ``iterfeatures`` method (#178)
|
||||
* Addition of the ``explode`` (#146) and ``dissolve`` (#310, #311) methods.
|
||||
* Addition of the ``sindex`` attribute, a Spatial Index using the optional
|
||||
- Addition of the ``explode`` (#146) and ``dissolve`` (#310, #311) methods.
|
||||
- Addition of the ``sindex`` attribute, a Spatial Index using the optional
|
||||
dependency ``rtree`` (``libspatialindex``) that can be used to speed up
|
||||
certain operations such as overlays (#140, #141).
|
||||
* Addition of the ``GeoSeries.cx`` coordinate indexer to slice a GeoSeries based
|
||||
- Addition of the ``GeoSeries.cx`` coordinate indexer to slice a GeoSeries based
|
||||
on a bounding box of the coordinates (#55).
|
||||
* Improvements to plotting: ability to specify edge colors (#173), support for
|
||||
- Improvements to plotting: ability to specify edge colors (#173), support for
|
||||
the ``vmin``, ``vmax``, ``figsize``, ``linewidth`` keywords (#207), legends
|
||||
for chloropleth plots (#210), color points by specifying a colormap (#186) or
|
||||
a single color (#238).
|
||||
* Larger flexibility of ``to_crs``, accepting both dicts and proj strings (#289)
|
||||
* Addition of embedded example data, accessible through
|
||||
- Larger flexibility of ``to_crs``, accepting both dicts and proj strings (#289)
|
||||
- Addition of embedded example data, accessible through
|
||||
``geopandas.datasets.get_path``.
|
||||
|
||||
API changes:
|
||||
|
||||
* In the ``plot`` method, the ``axes`` keyword is renamed to ``ax`` for
|
||||
- In the ``plot`` method, the ``axes`` keyword is renamed to ``ax`` for
|
||||
consistency with pandas, and the ``colormap`` keyword is renamed to ``cmap``
|
||||
for consistency with matplotlib (#208, #228, #240).
|
||||
|
||||
Bug fixes:
|
||||
|
||||
* Properly handle rows with missing geometries (#139, #193).
|
||||
* Fix ``GeoSeries.to_json`` (#263).
|
||||
* Correctly serialize metadata when pickling (#199, #206).
|
||||
* Fix ``merge`` and ``concat`` to return correct GeoDataFrame (#247, #320, #322).
|
||||
- Properly handle rows with missing geometries (#139, #193).
|
||||
- Fix ``GeoSeries.to_json`` (#263).
|
||||
- Correctly serialize metadata when pickling (#199, #206).
|
||||
- Fix ``merge`` and ``concat`` to return correct GeoDataFrame (#247, #320, #322).
|
||||
|
||||
Reference in New Issue
Block a user