Improvements
- Add support to read/add/remove embedded layer styles in gpkg (263)
- Add `gridsize` parameter to most spatial operations (261, 407, 413)
- Add `keep_empty_geoms` and `where_post` parameters to many single layer spatial operations
(262, 398)
- Add `where_post` parameter to many two layer spatial operations (312)
- Add `columns`, `sql` and `where` parameters to `copy_layer` and `append_to` (311, 432)
- Add `dissolve_within_distance` operation (409)
- Add support for lang+ algorithm in `simplify` (334)
- Add support to use `select` and `select_two_layers` on attribute tables (= tables
without geometry column) and/or have an attribute table as result (322, 379)
- Add support to process all file types supported by gdal in most general file and layer
operations, e.g. `get_layerinfo`, `read_file`,... (402)
- Add support for files with Z/M dimensions in the general file and layer operations (369)
- Add support for spatialite 5.1 in `join_nearest` (412)
- Improve performance of `makevalid` and `isvalid` (258)
- Improve performance of `intersection`, 30% faster for typical data, up to 4x faster
for large input geometries (340, 358)
- Improve performance of `clip`: 3x faster for typical data (358)
- Improve performance of `export_by_location`, especially when `area_inters_column_name`
and `min_area_intersect` are `None`: a lot faster + 10x less memory usage (370)
- Improve performance of `erase`, `identity`, `symmetric difference` and `union` by
applying on-the-fly subdividing of complex geometries to speed up processing. The new
parameter `subdivide_coords` can be used to control the feature. For files with very
large input geometries, up to 100x faster + 10x less memory usage.
(329, 330, 331, 357, 396, 427, 438, 446)
- Improve performance of spatial operations when only one batch is used (271)
- Improve performance of single layer operations (375)
- Improve performance of some geopandas/shapely based operations (342, 408)
- Add checks that `output_path` must not be equal to the/an `input_path` for geo
operations (246)
- Follow geopandas behaviour of using shapely2 and/or pygeos instead of forcing pygeos
(294)
- Improve handling of "SELECT * ..." style queries in `select` and `select_two_layers`
(283)
- Improve handling + tests regarding empty input layers/NULL geometries (320)
- Improve logging: use geo operation being executed as `logger name` (410)
- Many small improvements to logging, documentation, (gdal)error messages,...
(321, 366, 394, 439,...)
- Use smaller footprint conda packages for tests (use `geopandas-base`, `nomkl`) (377)
- Use ruff instead of flake8 for linting (317)
Bugs fixed
- Fix parameter `index` in `to_file` being ~ ignored (285)
- Fix `fid` column in output having only null values in e.g. `union` (362)
- Fix "json" aggregate column handling in dissolve on line and point input files gives
wrong results (257)
- Fix error in `read_file` when `read_geometry=False` and `columns` specified (393)
- Fix error in `copy_layer`/`convert` with `explodecollections` on some input files
(395)
- Fix dissolve forcing output to wrong geometrytype in some cases (424)
Deprecations and compatibility notes
- Drop support for shapely1 (329, 338)
- Parameter `precision` of `makevalid` is renamed to `gridsize` as this is the typical
terminology in other libraries (273)
- When `join_nearest` is used with spatialite, >= 5.1, two additional mandatory
parameters need to be specified: `distance` and `expand` (412)
- Parameter `area_inters_column_name` in `export_by_location` now defaults to `None`
instead of "area_inters" (370)
- Deprecate `convert` and rename to `copy_layer` (310)
- Deprecate `split` and rename to `identity` (397)
- Deprecate `is_geofile` and `is_geofile_ext` (402)
- Make the `GeofileType` enum private, in preparation of probably removing it later on
(402)
- Remove the long-deprecated functions `get_driver_for_ext`, `to_multi_type` and
`to_generaltypeid` (276)
- Remove the long-deprecated `vector_util`, `geofileops.geofile` and
`geofileops.geofileops` namespaces (276)
- Remove `geometry_util`, `geoseries_util` and `grid_util` (339):
- Most functions were moved to `pygeoops` because they are generally reusable.
- Remaining functions are moved either to `_geometry_util` or `_geoseries_util` to
make it clearer they are not public.