naturalis / sdmdl

Species Distribution Modelling using Deep Learning
MIT License
24 stars 11 forks source link

Update geopandas to 0.14.1 #431

Closed pyup-bot closed 10 months ago

pyup-bot commented 12 months ago

This PR updates geopandas from 0.5.1 to 0.14.1.

Changelog ### 0.14 ``` GeoPandas will use Shapely 2.0 by default instead of PyGEOS when both Shapely >= 2.0 and PyGEOS are installed. PyGEOS will continue to be used by default when PyGEOS is installed alongside Shapely < 2.0. Support for PyGEOS and Shapely < 2.0 will be removed in GeoPandas 1.0. (2999) API changes: - ``seed`` keyword in ``sample_points`` is deprecated. Use ``rng`` instead. (2913). New methods: - Added ``concave_hull`` method from shapely to GeoSeries/GeoDataframe (2903). - Added ``delaunay_triangles`` method from shapely to GeoSeries/GeoDataframe (2907). - Added ``extract_unique_points`` method from shapely to GeoSeries/GeoDataframe (2915). - Added ``frechet_distance()`` method from shapely to GeoSeries/GeoDataframe (2929). - Added ``hausdorff_distance`` method from shapely to GeoSeries/GeoDataframe (2909). - Added ``minimum_rotated_rectangle`` method from shapely to GeoSeries/GeoDataframe (2541). - Added ``offset_curve`` method from shapely to GeoSeries/GeoDataframe (2902). - Added ``remove_repeated_points`` method from shapely to GeoSeries/GeoDataframe (2940). - Added ``reverse`` method from shapely to GeoSeries/GeoDataframe (2988). - Added ``segmentize`` method from shapely to GeoSeries/GeoDataFrame (2910). - Added ``shortest_line`` method from shapely to GeoSeries/GeoDataframe (2960). New features and improvements: - Added ``exclusive`` parameter to ``sjoin_nearest`` method for Shapely >= 2.0 (2877) - The ``to_file()`` method will now automatically detect the FlatGeoBuf driver for files with the `.fgb` extension (2958) Bug fixes: - Fix ambiguous error when GeoDataFrame is initialized with a column called ``"crs"`` (2944) - Fix a color assignment in ``explore`` when using ``UserDefined`` bins (2923) - Fix bug in `apply` with `axis=1` where the given user defined function returns nested data in the geometry column (2959) - Properly infer schema for ``np.int32`` and ``pd.Int32Dtype`` columns (2950) - ``assert_geodataframe_equal`` now handles GeoDataFrames with no active geometry (2498) Notes on (optional) dependencies: - GeoPandas 0.14 drops support for Python 3.8 and pandas 1.3 and below (the minimum supported pandas version is now 1.4). Further, the minimum required versions for the listed dependencies have now changed to shapely 1.8.0, fiona 1.8.21, pyproj 3.3.0 and matplotlib 3.5.0 (3001) Deprecations and compatibility notes: - `geom_almost_equals()` methods have been deprecated and `geom_equals_exact()` should be used instead (2604). ``` ### 0.13.2 ``` Bug fix: - Fix a regression in reading from local file URIs (``file://..``) using ``geopandas.read_file`` (2948). ``` ### 0.13.1 ``` Bug fix: - Fix 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). ``` ### 0.13 ``` New methods: - Added ``sample_points`` method to sample random points from Polygon or LineString geometries (2860). - New ``hilbert_distance()`` method that calculates the distance along a Hilbert curve for each geometry in a GeoSeries/GeoDataFrame (2297). - Support for sorting geometries (for example, using ``sort_values()``) based on the distance along the Hilbert curve (2070). - Added ``get_coordinates()`` method from shapely to GeoSeries/GeoDataframe (2624). - Added ``minimum_bounding_circle()`` method from shapely to GeoSeries/GeoDataframe (2621). - Added `minimum_bounding_radius()` as GeoSeries method (2827). Other new features and improvements: - The Parquet and Feather IO functions now support the latest 1.0.0-beta.1 version of the GeoParquet specification (<geoparquet.org>) (2663). - Added support to fill missing values in `GeoSeries.fillna` via another `GeoSeries` (2535). - Support specifying ``min_zoom`` and ``max_zoom`` inside the ``map_kwds`` argument for ``.explore()`` (2599). - Added support for append (``mode="a"`` or ``append=True``) in ``to_file()`` using ``engine="pyogrio"`` (2788). - Added a ``to_wgs84`` keyword to ``to_json`` allowing automatic re-projecting to follow the 2016 GeoJSON specification (416). - ``to_json`` output now includes a ``"crs"`` field if the CRS is not the default WGS84 (1774). - Improve error messages when accessing the `geometry` attribute of GeoDataFrame without an active geometry column related to the default name `"geometry"` being provided in the constructor (2577) Deprecations and compatibility notes: - Added warning that ``unary_union`` will return ``'GEOMETRYCOLLECTION EMPTY'`` instead of None for all-None GeoSeries. (2618) - The ``query_bulk()`` method of the spatial index `.sindex` property is deprecated in favor of ``query()`` (2823). Bug fixes: - Ensure that GeoDataFrame created from DataFrame is a copy, not a view (2667) - Fix mismatch between geometries and colors in ``plot()`` if an empty or missing geometry is present (2224) - Escape special characters to avoid TemplateSyntaxError in ``explore()`` (2657) - Fix `to_parquet`/`to_feather` to not write an invalid bbox (with NaNs) in the metadata in case of an empty GeoDataFrame (2653) - Fix `to_parquet`/`to_feather` to use correct WKB flavor for 3D geometries (2654) - Fix `read_file` to avoid reading all file bytes prior to calling Fiona or Pyogrio if provided a URL as input (2796) - Fix `copy()` downcasting GeoDataFrames without an active geometry column to a DataFrame (2775) - Fix geometry column name propagation when GeoDataFrame columns are a multiindex (2088) - Fix `iterfeatures()` method of GeoDataFrame to correctly handle non-scalar values when `na='drop'` is specified (2811) - Fix issue with passing custom legend labels to `plot` (2886) Notes on (optional) dependencies: - GeoPandas 0.13 drops support pandas 1.0.5 (the minimum supported pandas version is now 1.1). Further, the minimum required versions for the listed dependencies have now changed to shapely 1.7.1, fiona 1.8.19, pyproj 3.0.1 and matplotlib 3.3.4 (2655) ``` ### 0.12.2 ``` Bug fixes: - Correctly handle geometries with Z dimension in ``to_crs()`` when using PyGEOS or Shapely >= 2.0 (previously the z coordinates were lost) (1345). - Assign Crimea to Ukraine in the ``naturalearth_lowres`` built-in dataset (2670) ``` ### 0.12.1 ``` Small bug-fix release removing the shapely<2 pin in the installation requirements. ``` ### 0.12 ``` The highlight of this release is the support for Shapely 2.0. This makes it possible to test Shapely 2.0 (currently 2.0b1) alongside GeoPandas. Note that if you also have PyGEOS installed, you need to set an environment variable (`USE_PYGEOS=0`) before importing geopandas to actually test Shapely 2.0 features instead of PyGEOS. See <https://geopandas.org/en/latest/getting_started/install.html#using-the-optional-pygeos-dependency> for more details. New features and improvements: - Added ``normalize()`` method from shapely to GeoSeries/GeoDataframe (2537). - Added ``make_valid()`` method from shapely to GeoSeries/GeoDataframe (2539). - Added ``where`` filter to ``read_file`` (2552). - Updated the distributed natural earth datasets (*naturalearth_lowres* and *naturalearth_cities*) to version 5.1 (2555). Deprecations and compatibility notes: - Accessing the `crs` of a `GeoDataFrame` without active geometry column was deprecated and this now raises an AttributeError (2578). - Resolved colormap-related warning in ``.explore()`` for recent Matplotlib versions (2596). Bug fixes: - Fix cryptic error message in ``geopandas.clip()`` when clipping with an empty geometry (2589). - Accessing `gdf.geometry` where the active geometry column is missing, and a column named `"geometry"` is present will now raise an `AttributeError`, rather than returning `gdf["geometry"]` (2575). - Combining GeoSeries/GeoDataFrames with ``pandas.concat`` will no longer silently override CRS information if not all inputs have the same CRS (2056). ``` ### 0.11.1 ``` Small bug-fix release: - Fix regression (RecursionError) in reshape methods such as ``unstack()`` and ``pivot()`` involving MultiIndex, or GeoDataFrame construction with MultiIndex (2486). - Fix regression in ``GeoDataFrame.explode()`` with non-default geometry column name. - Fix regression in ``apply()`` causing row-wise all nan float columns to be casted to GeometryDtype (2482). - Fix a crash in datetime column reading where the file contains mixed timezone offsets (2479). These will be read as UTC localized values. - Fix a crash in datetime column reading where the file contains datetimes outside the range supported by [ns] precision (2505). - Fix regression in passing the Parquet or Feather format ``version`` in ``to_parquet`` and ``to_feather``. As a result, the ``version`` parameter for the ``to_parquet`` and ``to_feather`` methods has been replaced with ``schema_version``. ``version`` will be passed directly to underlying feather or parquet writer. ``version`` will only be used to set ``schema_version`` if ``version`` is one of 0.1.0 or 0.4.0 (2496). ``` ### 0.11 ``` ---------------------------- Highlights of this release: - The ``geopandas.read_file()`` and `GeoDataFrame.to_file()` methods to read and write GIS file formats can now optionally use the [pyogrio](https://github.com/geopandas/pyogrio/) package under the hood through the ``engine="pyogrio"`` keyword. The pyogrio package implements vectorized IO for GDAL/OGR vector data sources, and is faster compared to the ``fiona``-based engine (2225). - 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) ``` ### 0.10.2 ``` --------------------------------- Small bug-fix release: - 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 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 formatted legend labels have duplicates (2166). - 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). ``` ### 0.10.1 ``` -------------------------------- Small bug-fix release: - Fix regression in ``overlay()`` with non-overlapping geometries and a non-default ``how`` (i.e. not "intersection") (2157). ``` ### 0.10.0 ``` -------------------------------- 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`` attribute gained a new method for a "nearest" spatial index query (1865, 2053). - 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 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 pandas' explode method) to reset the index in the result, and a new ``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 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 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 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 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 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=`` keyword (1626). - 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)`` function if this results in duplicated active geometry columns (2046). - 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. Bug fixes: - 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 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). - 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 (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 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) Notes on (optional) dependencies: - GeoPandas 0.10.0 dropped support for Python 3.6 and pandas 0.24. Further, the minimum required versions are numpy 1.18, shapely 1.6, fiona 1.8, matplotlib 3.1 and pyproj 2.2. - Plotting with a classification schema now requires mapclassify version >= 2.4 (1737). - Compatibility fixes for the latest numpy in combination with Shapely 1.7 (2072) - Compatibility fixes for the upcoming Shapely 1.8 (2087). - Compatibility fixes for the latest PyGEOS (1872, 2014) and matplotlib (colorbar issue, 2066). ``` ### 0.9.0 ``` --------------------------------- Many documentation improvements and a restyled and restructured website with 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 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()``) (1465). - 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 create a union of all geometries (single-row GeoDataFrame) (1568). - 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 (1619). - ``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 non-geometry column, using the pandas implementation (1720). - 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`` (1668). - 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 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 the original aspect (1512) - 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 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 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 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, 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 (1444). Bug fixes: - 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 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 (1583) - 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`` 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 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`` 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 (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). 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 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 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). ``` ### 0.8.2 ``` -------------------------------- Small bug-fix release for compatibility with PyGEOS 0.9. ``` ### 0.8.1 ``` ----------------------------- Small bug-fix release: - 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 GeoPandas versions (1511). ``` ### 0.8.0 ``` ----------------------------- **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 [installation docs](https://geopandas.readthedocs.io/en/latest/install.html#using-the-optional-pygeos-dependency) for more info and how to enable it. New features and improvements: - IO enhancements: - 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 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 (802). By default it still uses the CRS of the GeoDataFrame. - New ``chunksize`` keyword in ``geopandas.read_postgis`` to read a query in chunks (1123). - Improvements related to geometry columns and CRS: - 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 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 "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 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 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`` to pass fully custom class labels (1302). - 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). 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`` 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 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 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 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 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 (1445). - Better error message when rtree is not installed (1425). - 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)! GeoPandas 0.8.0 is the last release to support Python 3.5. The next release will require Python 3.6, pandas 0.24, numpy 1.15 and shapely 1.6 or higher. ``` ### 0.7.0 ``` --------------------------------- 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 GeoDataFrame no longer stores the CRS information as a proj4 string or dict, but as a ``pyproj.CRS`` object (1101). This gives a better user interface and integrates improvements from pyproj and PROJ 6, but might also require some changes in your code. Check the [migration guide](https://geopandas.readthedocs.io/en/latest/projections.html#upgrading-to-geopandas-0-7-with-pyproj-2-2-and-proj-6) in the documentation. Other API changes; - 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). New features and improvements: - 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 points and linestrings in addition to polygons (1110). - 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 style those geometries (1156). - 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). - Added support for the new nullable integer data type of pandas in ``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). ``` ### 0.6.3 ``` --------------------------------- 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 no missing values in the geometry column. This should make it easier to fill the numerical columns of the GeoDataFrame (1279). ``` ### 0.6.2 ``` --------------------------------- Small bug-fix release fixing a few regressions: - Fix a regression in passing an array of RRB(A) tuples to the ``.plot()`` method (1178, 1211). - Fix the ``bounds`` and ``total_bounds`` attributes for empty GeoSeries, which also fixes the repr of an empty or all-NA GeoSeries (1184, 1195). - Fix filtering of a GeoDataFrame to preserve the index type when ending up with an empty result (1190). ``` ### 0.6.1 ``` -------------------------------- 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). ``` ### 0.6.0 ``` ---------------------------------- Important note! This will be the last release to support Python 2.7 (1031) 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 ``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. 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). - 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). - Fixed failing case in ``geopandas.sjoin`` with empty geometries (1138). In addition, the minimum required versions of some dependencies have been increased: GeoPandas now requirs pandas >=0.23.4 and matplotlib >=2.0.1 (1002). ```
Links - PyPI: https://pypi.org/project/geopandas - Changelog: https://data.safetycli.com/changelogs/geopandas/
pyup-bot commented 10 months ago

Closing this in favor of #442