shapely 2.0.7__tar.gz → 2.1.0rc1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {shapely-2.0.7 → shapely-2.1.0rc1}/CHANGES.txt +93 -2
- {shapely-2.0.7 → shapely-2.1.0rc1}/PKG-INFO +8 -10
- {shapely-2.0.7 → shapely-2.1.0rc1}/README.rst +4 -4
- shapely-2.1.0rc1/docs/coverage.rst +11 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/docs/design.rst +0 -1
- {shapely-2.0.7 → shapely-2.1.0rc1}/docs/geometry.rst +8 -8
- {shapely-2.0.7 → shapely-2.1.0rc1}/docs/index.rst +2 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/docs/installation.rst +49 -32
- {shapely-2.0.7 → shapely-2.1.0rc1}/docs/io.rst +0 -1
- {shapely-2.0.7 → shapely-2.1.0rc1}/docs/manual.rst +226 -185
- {shapely-2.0.7 → shapely-2.1.0rc1}/docs/migration.rst +10 -8
- {shapely-2.0.7 → shapely-2.1.0rc1}/docs/migration_pygeos.rst +6 -4
- shapely-2.1.0rc1/docs/plotting.rst +12 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/docs/strtree.rst +1 -1
- {shapely-2.0.7 → shapely-2.1.0rc1}/docs/testing.rst +2 -2
- shapely-2.1.0rc1/pyproject.toml +188 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/setup.cfg +0 -12
- {shapely-2.0.7 → shapely-2.1.0rc1}/setup.py +53 -63
- shapely-2.1.0rc1/shapely/__init__.py +36 -0
- shapely-2.1.0rc1/shapely/_coverage.py +168 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/_enum.py +1 -1
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/_geometry.py +317 -165
- shapely-2.1.0rc1/shapely/_geometry_helpers.pyx +730 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/_geos.pxd +10 -4
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/_geos.pyx +0 -1
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/_pygeos_api.pxd +26 -3
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/_ragged_array.py +117 -95
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/_version.py +3 -3
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/affinity.py +6 -6
- shapely-2.1.0rc1/shapely/algorithms/__init__.py +1 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/algorithms/_oriented_envelope.py +1 -3
- shapely-2.1.0rc1/shapely/algorithms/cga.py +50 -0
- shapely-2.1.0rc1/shapely/algorithms/polylabel.py +43 -0
- shapely-2.1.0rc1/shapely/conftest.py +70 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/constructive.py +679 -197
- shapely-2.1.0rc1/shapely/coordinates.py +335 -0
- shapely-2.1.0rc1/shapely/coords.py +119 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/creation.py +372 -96
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/decorators.py +54 -3
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/errors.py +13 -15
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/geometry/__init__.py +11 -12
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/geometry/base.py +302 -191
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/geometry/collection.py +11 -11
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/geometry/geo.py +23 -15
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/geometry/linestring.py +53 -30
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/geometry/multilinestring.py +11 -9
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/geometry/multipoint.py +25 -16
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/geometry/multipolygon.py +13 -14
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/geometry/point.py +44 -23
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/geometry/polygon.py +55 -65
- shapely-2.1.0rc1/shapely/geos.py +17 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/io.py +91 -56
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/linear.py +69 -36
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/measurement.py +93 -64
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/ops.py +90 -108
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/plotting.py +17 -12
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/predicates.py +438 -243
- shapely-2.1.0rc1/shapely/prepared.py +74 -0
- shapely-2.1.0rc1/shapely/set_operations.py +784 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/speedups.py +12 -9
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/strtree.py +36 -30
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/testing.py +12 -8
- shapely-2.1.0rc1/shapely/tests/common.py +285 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_collection.py +14 -1
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_coords.py +31 -6
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_decimal.py +28 -28
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_equality.py +78 -31
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_format.py +29 -27
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_geometry_base.py +90 -2
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_linestring.py +22 -3
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_multi.py +1 -1
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_multilinestring.py +0 -1
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_multipoint.py +17 -2
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_multipolygon.py +22 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_point.py +23 -10
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_polygon.py +4 -7
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/conftest.py +0 -9
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_affinity.py +4 -7
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_buffer.py +3 -2
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_cga.py +1 -1
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_clip_by_rect.py +1 -2
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_create_inconsistent_dimensionality.py +8 -5
- shapely-2.1.0rc1/shapely/tests/legacy/test_equality.py +24 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_invalid_geometries.py +1 -3
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_linemerge.py +0 -1
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_locale.py +2 -4
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_make_valid.py +0 -3
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_mapping.py +1 -1
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_minimum_clearance.py +2 -12
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_operations.py +5 -3
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_orient.py +28 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_persist.py +2 -5
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_pickle.py +4 -7
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_polygonize.py +0 -1
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_polylabel.py +24 -39
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_predicates.py +2 -6
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_prepared.py +4 -1
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_shape.py +16 -1
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_snap.py +0 -1
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_split.py +41 -5
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_substring.py +1 -1
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_union.py +3 -7
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_vectorized.py +4 -1
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_voronoi_diagram.py +1 -18
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_wkb.py +4 -21
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_wkt.py +2 -2
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/threading_test.py +6 -6
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_constructive.py +413 -33
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_coordinates.py +188 -32
- shapely-2.1.0rc1/shapely/tests/test_coverage.py +249 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_creation.py +150 -2
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_creation_indices.py +168 -1
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_geometry.py +89 -88
- shapely-2.1.0rc1/shapely/tests/test_io.py +1351 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_linear.py +15 -3
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_measurement.py +0 -11
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_misc.py +8 -14
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_plotting.py +21 -3
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_predicates.py +95 -12
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_ragged_array.py +210 -21
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_set_operations.py +87 -54
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_strtree.py +12 -34
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/test_testing.py +2 -8
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/validation.py +10 -10
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/vectorized/__init__.py +22 -6
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/wkb.py +11 -5
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/wkt.py +14 -19
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely.egg-info/PKG-INFO +8 -10
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely.egg-info/SOURCES.txt +7 -1
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely.egg-info/requires.txt +2 -1
- shapely-2.1.0rc1/src/c_api.c +31 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/src/c_api.h +9 -6
- {shapely-2.0.7 → shapely-2.1.0rc1}/src/coords.c +24 -24
- {shapely-2.0.7 → shapely-2.1.0rc1}/src/fast_loop_macros.h +14 -3
- {shapely-2.0.7 → shapely-2.1.0rc1}/src/geos.c +375 -183
- {shapely-2.0.7 → shapely-2.1.0rc1}/src/geos.h +37 -15
- {shapely-2.0.7 → shapely-2.1.0rc1}/src/lib.c +6 -2
- {shapely-2.0.7 → shapely-2.1.0rc1}/src/pygeom.c +36 -36
- shapely-2.1.0rc1/src/pygeos.c +258 -0
- shapely-2.1.0rc1/src/pygeos.h +8 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/src/strtree.c +3 -9
- {shapely-2.0.7 → shapely-2.1.0rc1}/src/ufuncs.c +549 -247
- {shapely-2.0.7 → shapely-2.1.0rc1}/src/vector.c +0 -1
- shapely-2.0.7/pyproject.toml +0 -78
- shapely-2.0.7/shapely/__init__.py +0 -33
- shapely-2.0.7/shapely/_geometry_helpers.pyx +0 -395
- shapely-2.0.7/shapely/algorithms/cga.py +0 -24
- shapely-2.0.7/shapely/algorithms/polylabel.py +0 -139
- shapely-2.0.7/shapely/coordinates.py +0 -198
- shapely-2.0.7/shapely/coords.py +0 -67
- shapely-2.0.7/shapely/geometry/conftest.py +0 -10
- shapely-2.0.7/shapely/geos.py +0 -8
- shapely-2.0.7/shapely/prepared.py +0 -77
- shapely-2.0.7/shapely/set_operations.py +0 -509
- shapely-2.0.7/shapely/tests/common.py +0 -125
- shapely-2.0.7/shapely/tests/legacy/__init__.py +0 -10
- shapely-2.0.7/shapely/tests/legacy/test_equality.py +0 -32
- shapely-2.0.7/shapely/tests/test_io.py +0 -790
- shapely-2.0.7/src/c_api.c +0 -31
- {shapely-2.0.7 → shapely-2.1.0rc1}/CITATION.cff +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/CREDITS.txt +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/LICENSE.txt +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/docs/constructive.rst +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/docs/coordinates.rst +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/docs/creation.rst +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/docs/linear.rst +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/docs/measurement.rst +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/docs/predicates.rst +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/docs/properties.rst +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/docs/release.rst +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/docs/set_operations.rst +0 -0
- {shapely-2.0.7/shapely/algorithms → shapely-2.1.0rc1/shapely/tests}/__init__.py +0 -0
- {shapely-2.0.7/shapely/tests → shapely-2.1.0rc1/shapely/tests/geometry}/__init__.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_emptiness.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/geometry/test_hash.py +0 -0
- {shapely-2.0.7/shapely/tests/geometry → shapely-2.1.0rc1/shapely/tests/legacy}/__init__.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_box.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_delaunay.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_empty_polygons.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_geointerface.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_linear_referencing.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_ndarrays.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_nearest.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_operators.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_parallel_offset.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_products_z.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_shared_paths.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_singularity.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_svg.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_transform.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely/tests/legacy/test_validation.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely.egg-info/dependency_links.txt +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/shapely.egg-info/top_level.txt +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/src/coords.h +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/src/kvec.h +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/src/pygeom.h +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/src/strtree.h +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/src/ufuncs.h +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/src/vector.h +0 -0
- {shapely-2.0.7 → shapely-2.1.0rc1}/versioneer.py +0 -0
|
@@ -1,6 +1,89 @@
|
|
|
1
1
|
Changes
|
|
2
2
|
=======
|
|
3
3
|
|
|
4
|
+
2.1.0 (unreleased)
|
|
5
|
+
------------------
|
|
6
|
+
|
|
7
|
+
API changes:
|
|
8
|
+
|
|
9
|
+
- Equality of geometries (``geom1 == geom2``) now considers NaN coordinate
|
|
10
|
+
values in the same location to be equal (#1775). It is recommended however to
|
|
11
|
+
ensure geometries don't have NaN values in the first place, for which you can
|
|
12
|
+
now use the ``handle_nan`` parameter in construction functions.
|
|
13
|
+
|
|
14
|
+
Bug fixes:
|
|
15
|
+
|
|
16
|
+
- Prevent crash when serializing a number > 1e100 to WKT with GEOS < 3.13. (#1907)
|
|
17
|
+
- Ensure ``plot_polygon`` does not color the interiors of polygons (#1933).
|
|
18
|
+
- Fixes GeoJSON serialization of empty points (#2118)
|
|
19
|
+
- Fixes `__geo_interface__` handling of empty points (#2120)
|
|
20
|
+
- Fixes ``GeometryCollection()`` constructor accepting an array of geometries (#2017).
|
|
21
|
+
|
|
22
|
+
Improvements:
|
|
23
|
+
|
|
24
|
+
- Add a ``handle_nan`` parameter to ``shapely.points()``,
|
|
25
|
+
``shapely.linestrings()`` and ``shapely.linearrings()`` to allow, skip, or
|
|
26
|
+
error on nonfinite (NaN / Inf) coordinates. The default behaviour (allow) is
|
|
27
|
+
backwards compatible (#1594, #1811).
|
|
28
|
+
- Add an ``interleaved`` parameter to ``shapely.transform()`` allowing a transposed call
|
|
29
|
+
signature in the ``transformation`` function.
|
|
30
|
+
- The ``include_z`` in ``shapely.transform()`` now also allows ``None``, which
|
|
31
|
+
lets it automatically detect the dimensionality of each input geometry.
|
|
32
|
+
- Add an ``include_m`` keyword in ``to_ragged_array`` and ``get_coordinates`` (#2234, #2235)
|
|
33
|
+
- Add parameters ``method`` and ``keep_collapsed`` to ``shapely.make_valid()`` (#1941)
|
|
34
|
+
- The ``voronoi_polygons`` now accepts the ``ordered`` keyword, optionally forcing the
|
|
35
|
+
order of polygons within the GeometryCollection to follow the order of input
|
|
36
|
+
coordinates. Requires at least GEOS 3.12. (#1968)
|
|
37
|
+
- Add option on ``invalid="fix"`` to ``from_wkb`` and ``from_wkt`` (#2094)
|
|
38
|
+
- Add a ``normalize`` keyword to ``equals_exact`` (#1231)
|
|
39
|
+
- Handle ``Feature`` type in ``shapely.geometry.shape`` (#1815)
|
|
40
|
+
- Add support to split polygons by multilinestrings (#2206)
|
|
41
|
+
- Add an ``m`` attribute on the Point class and an ``has_m`` attribute on the base Geometry class.
|
|
42
|
+
|
|
43
|
+
New functions:
|
|
44
|
+
|
|
45
|
+
- Add ``disjoint_subset_union`` and ``disjoint_subset_union_all`` as an optimized
|
|
46
|
+
version of union and union_all, assuming inputs can be divided into subsets that do
|
|
47
|
+
not intersect. Requires at least GEOS 3.12.
|
|
48
|
+
- Add function ``minimum_clearance_line`` (#2106)
|
|
49
|
+
- Add function ``maximum_inscribed_circle`` (#1307)
|
|
50
|
+
- Add function ``orient_polygons`` (#2147)
|
|
51
|
+
- Add function ``constrained_delaunay_triangles`` (#1685)
|
|
52
|
+
- Add function ``coverage_simplify`` to allow topological simplification of polygonal
|
|
53
|
+
coverages (#1969)
|
|
54
|
+
- Add function ``coverage_is_valid`` and ``coverage_invalid_edges`` to validate
|
|
55
|
+
an array of geometries as valid topological coverage (#2156)
|
|
56
|
+
- Add function ``equals_identical`` (#1760)
|
|
57
|
+
- Add function ``has_m`` (#2008)
|
|
58
|
+
- Add function ``get_m`` (#2019)
|
|
59
|
+
|
|
60
|
+
Breaking changes in GEOS 3.12:
|
|
61
|
+
|
|
62
|
+
- ``oriented_envelope`` / ``minimum_rotated_rectangle`` changed its implementation
|
|
63
|
+
in GEOS 3.12. Be aware that results will change when updating GEOS. Coincidentally
|
|
64
|
+
the implementation is similar to the shapely 1.x approach. (#1885)
|
|
65
|
+
- ``get_coordinate_dimension`` / ``has_z`` now considers geometries three dimensional if
|
|
66
|
+
they have a NaN z coordinate. (#1885)
|
|
67
|
+
- ``voronoi_polygons`` changed its output from a LINESTRING to a MULTILINESTRING in case
|
|
68
|
+
``only_edges=True``. (#1885)
|
|
69
|
+
- The WKT representation of a MULTIPOINT changed from for example "MULTIPOINT (0 0, 1 1)"
|
|
70
|
+
to "MULTIPOINT ((0 0), (1 1))". (#1885)
|
|
71
|
+
|
|
72
|
+
Deprecations:
|
|
73
|
+
|
|
74
|
+
- The ``shapely.geos`` module is deprecated. All GEOS-version related attributes are
|
|
75
|
+
available directly from the top-level ``shapely`` namespace as well (already since
|
|
76
|
+
shapely 2.0) (#2145).
|
|
77
|
+
- The ``shapely.vectorized`` module is deprecated. The two functions (``contains and
|
|
78
|
+
``touches``) can be replaced by the top-level vectorized functions ``contains_xy``
|
|
79
|
+
and ``intersects_xy`` (#1630).
|
|
80
|
+
|
|
81
|
+
Packaging:
|
|
82
|
+
|
|
83
|
+
- Require GEOS >= 3.9, NumPy >= 1.21, and Python >= 3.10 (#1802, #1885, #2124)
|
|
84
|
+
- Binary wheels are now built for musllinux (Alpine) x86_64 platforms (#1996).
|
|
85
|
+
- Upgraded the GEOS version in the binary wheel distributions to 3.13.1.
|
|
86
|
+
|
|
4
87
|
2.0.7 (2025-01-30)
|
|
5
88
|
------------------
|
|
6
89
|
|
|
@@ -46,6 +129,7 @@ Bug fixes:
|
|
|
46
129
|
- Fix bug in ``to_wkt`` with multiple empty Z geometries (#2012).
|
|
47
130
|
- Fix bug in ``to_ragged_array`` for an array of Points with missing values (#2034).
|
|
48
131
|
|
|
132
|
+
|
|
49
133
|
2.0.3 (2024-02-16)
|
|
50
134
|
------------------
|
|
51
135
|
|
|
@@ -55,6 +139,7 @@ Bug fixes:
|
|
|
55
139
|
therefore a ``numpy<2`` upper pin was added to the requirements (#1972).
|
|
56
140
|
- Upgraded the GEOS version in the binary wheel distributions to 3.11.3.
|
|
57
141
|
|
|
142
|
+
|
|
58
143
|
2.0.2 (2023-10-12)
|
|
59
144
|
------------------
|
|
60
145
|
|
|
@@ -66,11 +151,16 @@ Bug fixes:
|
|
|
66
151
|
- Fix ``minimum_rotated_rectangle`` (``oriented_envelope``) to always return
|
|
67
152
|
the minimum area solution (instead of minimum width). In practice, it will use the
|
|
68
153
|
GEOS implementation only for GEOS 3.12+, and for older GEOS versions fall back to the
|
|
69
|
-
implementation that was included in Shapely < 2.
|
|
154
|
+
implementation that was included in Shapely < 2 (#1670).
|
|
155
|
+
- Fix ``from_ragged_array`` to work with read-only array input (#1744).
|
|
156
|
+
- Fix the handling of z coordinates ``shapely.ops.substring`` (#1699).
|
|
70
157
|
|
|
71
158
|
Wheels are available for Python 3.12 (and still include GEOS 3.11.2). Building
|
|
72
159
|
from source is now compatible with Cython 3.
|
|
73
160
|
|
|
161
|
+
For a full changelog, see
|
|
162
|
+
https://shapely.readthedocs.io/en/latest/release/2.x.html#version-2-0-2
|
|
163
|
+
|
|
74
164
|
2.0.1 (2023-01-30)
|
|
75
165
|
------------------
|
|
76
166
|
|
|
@@ -91,12 +181,13 @@ Improvements:
|
|
|
91
181
|
For a full changelog, see
|
|
92
182
|
https://shapely.readthedocs.io/en/latest/release/2.x.html#version-2-0-1
|
|
93
183
|
|
|
184
|
+
|
|
94
185
|
2.0.0 (2022-12-12)
|
|
95
186
|
------------------
|
|
96
187
|
|
|
97
188
|
Shapely version 2.0.0 is a major release featuring a complete refactor of the
|
|
98
189
|
internals and new vectorized (element-wise) array operations providing
|
|
99
|
-
considerable performance improvements.
|
|
190
|
+
considerable performance improvements.
|
|
100
191
|
|
|
101
192
|
For a full changelog, see
|
|
102
193
|
https://shapely.readthedocs.io/en/latest/release/2.x.html#version-2-0-0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: shapely
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.1.0rc1
|
|
4
4
|
Summary: Manipulation and analysis of geometric objects
|
|
5
5
|
Author: Sean Gillies
|
|
6
6
|
Maintainer: Shapely contributors
|
|
@@ -16,21 +16,19 @@ Classifier: Operating System :: Unix
|
|
|
16
16
|
Classifier: Operating System :: MacOS
|
|
17
17
|
Classifier: Operating System :: Microsoft :: Windows
|
|
18
18
|
Classifier: Programming Language :: Python :: 3
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
22
19
|
Classifier: Programming Language :: Python :: 3.10
|
|
23
20
|
Classifier: Programming Language :: Python :: 3.11
|
|
24
21
|
Classifier: Programming Language :: Python :: 3.12
|
|
25
22
|
Classifier: Programming Language :: Python :: 3.13
|
|
26
23
|
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
27
|
-
Requires-Python: >=3.
|
|
24
|
+
Requires-Python: >=3.10
|
|
28
25
|
Description-Content-Type: text/x-rst
|
|
29
26
|
License-File: LICENSE.txt
|
|
30
|
-
Requires-Dist: numpy
|
|
27
|
+
Requires-Dist: numpy>=1.21
|
|
31
28
|
Provides-Extra: test
|
|
32
29
|
Requires-Dist: pytest; extra == "test"
|
|
33
30
|
Requires-Dist: pytest-cov; extra == "test"
|
|
31
|
+
Requires-Dist: scipy-doctest; extra == "test"
|
|
34
32
|
Provides-Extra: docs
|
|
35
33
|
Requires-Dist: numpydoc==1.1.*; extra == "docs"
|
|
36
34
|
Requires-Dist: matplotlib; extra == "docs"
|
|
@@ -143,11 +141,11 @@ See the documentation for more examples and guidance: https://shapely.readthedoc
|
|
|
143
141
|
Requirements
|
|
144
142
|
============
|
|
145
143
|
|
|
146
|
-
Shapely 2.
|
|
144
|
+
Shapely 2.1 requires
|
|
147
145
|
|
|
148
|
-
* Python >=3.
|
|
149
|
-
* GEOS >=3.
|
|
150
|
-
* NumPy >=1.
|
|
146
|
+
* Python >=3.10
|
|
147
|
+
* GEOS >=3.9
|
|
148
|
+
* NumPy >=1.21
|
|
151
149
|
|
|
152
150
|
Installing Shapely
|
|
153
151
|
==================
|
|
@@ -103,11 +103,11 @@ See the documentation for more examples and guidance: https://shapely.readthedoc
|
|
|
103
103
|
Requirements
|
|
104
104
|
============
|
|
105
105
|
|
|
106
|
-
Shapely 2.
|
|
106
|
+
Shapely 2.1 requires
|
|
107
107
|
|
|
108
|
-
* Python >=3.
|
|
109
|
-
* GEOS >=3.
|
|
110
|
-
* NumPy >=1.
|
|
108
|
+
* Python >=3.10
|
|
109
|
+
* GEOS >=3.9
|
|
110
|
+
* NumPy >=1.21
|
|
111
111
|
|
|
112
112
|
Installing Shapely
|
|
113
113
|
==================
|
|
@@ -53,8 +53,8 @@ or WKB (Well-Known Binary) representation:
|
|
|
53
53
|
>>> from_wkb(b"\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?")
|
|
54
54
|
<POINT (1 1)>
|
|
55
55
|
|
|
56
|
-
A more efficient way of constructing geometries is by making use of the
|
|
57
|
-
functions described in :ref:`ref-creation`.
|
|
56
|
+
A more efficient way of constructing geometries is by making use of the
|
|
57
|
+
(vectorized) functions described in :ref:`ref-creation`.
|
|
58
58
|
|
|
59
59
|
Pickling
|
|
60
60
|
~~~~~~~~
|
|
@@ -181,9 +181,9 @@ Canonical form
|
|
|
181
181
|
When operations are applied on geometries the result is returned according to
|
|
182
182
|
some conventions.
|
|
183
183
|
|
|
184
|
-
In most cases, geometries will be returned in "mild" canonical form. There is
|
|
185
|
-
goal to keep this form stable, so it is expected to change in future
|
|
186
|
-
GEOS:
|
|
184
|
+
In most cases, geometries will be returned in "mild" canonical form. There is
|
|
185
|
+
no goal to keep this form stable, so it is expected to change in future
|
|
186
|
+
versions of GEOS:
|
|
187
187
|
|
|
188
188
|
- the coordinates of exterior rings follow a clockwise orientation and interior
|
|
189
189
|
rings have a counter-clockwise orientation. This is the opposite of the OGC
|
|
@@ -194,9 +194,9 @@ GEOS:
|
|
|
194
194
|
- the order of geometry types in a collection can be changed, but the order is
|
|
195
195
|
undefined
|
|
196
196
|
|
|
197
|
-
When :func:`~shapely.normalize` is used, the "strict" canonical form is
|
|
198
|
-
This type of normalization is meant to be stable, so changes to it
|
|
199
|
-
avoided if possible:
|
|
197
|
+
When :func:`~shapely.normalize` is used, the "strict" canonical form is
|
|
198
|
+
applied. This type of normalization is meant to be stable, so changes to it
|
|
199
|
+
will be avoided if possible:
|
|
200
200
|
|
|
201
201
|
- the coordinates of exterior rings follow a clockwise orientation and interior
|
|
202
202
|
rings have a counter-clockwise orientation
|
|
@@ -25,6 +25,15 @@ Shapely is available on the conda-forge channel. Install as follows::
|
|
|
25
25
|
|
|
26
26
|
$ conda install shapely --channel conda-forge
|
|
27
27
|
|
|
28
|
+
Installation of the development version using nightly wheels
|
|
29
|
+
------------------------------------------------------------
|
|
30
|
+
|
|
31
|
+
If you want to test the latest development version of Shapely, the easiest way
|
|
32
|
+
to get this version is by installing it from the Scientific Python index of
|
|
33
|
+
nightly wheel packages::
|
|
34
|
+
|
|
35
|
+
python -m pip install --pre --upgrade --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple shapely
|
|
36
|
+
|
|
28
37
|
|
|
29
38
|
Installation from source with custom GEOS library
|
|
30
39
|
-------------------------------------------------
|
|
@@ -45,16 +54,17 @@ On macOS::
|
|
|
45
54
|
$ brew install geos # skip this if you already have GEOS
|
|
46
55
|
$ pip install shapely --no-binary shapely
|
|
47
56
|
|
|
48
|
-
If you've installed GEOS to a standard location on Linux or macOS, the
|
|
49
|
-
find it using ``geos-config``. See the notes
|
|
50
|
-
to configure this.
|
|
57
|
+
If you've installed GEOS to a standard location on Linux or macOS, the
|
|
58
|
+
installation will automatically find it using ``geos-config``. See the notes
|
|
59
|
+
below on GEOS discovery at compile time to configure this.
|
|
51
60
|
|
|
52
|
-
We do not have a recipe for Windows platforms. The following steps should
|
|
53
|
-
to build Shapely yourself:
|
|
61
|
+
We do not have a recipe for Windows platforms. The following steps should
|
|
62
|
+
enable you to build Shapely yourself:
|
|
54
63
|
|
|
55
64
|
- Get a C compiler applicable to your Python version (https://wiki.python.org/moin/WindowsCompilers)
|
|
56
65
|
- Download and install a GEOS binary (https://trac.osgeo.org/osgeo4w/)
|
|
57
|
-
- Set GEOS_INCLUDE_PATH and GEOS_LIBRARY_PATH environment variables (see below
|
|
66
|
+
- Set GEOS_INCLUDE_PATH and GEOS_LIBRARY_PATH environment variables (see below
|
|
67
|
+
for notes on GEOS discovery)
|
|
58
68
|
- Run ``pip install shapely --no-binary``
|
|
59
69
|
- Make sure the GEOS .dll files are available on the PATH
|
|
60
70
|
|
|
@@ -62,8 +72,8 @@ to build Shapely yourself:
|
|
|
62
72
|
Installation for local development
|
|
63
73
|
-----------------------------------
|
|
64
74
|
|
|
65
|
-
This is similar to installing with a custom GEOS binary, but then instead of
|
|
66
|
-
Shapely with pip from PyPI, you clone the package from Github::
|
|
75
|
+
This is similar to installing with a custom GEOS binary, but then instead of
|
|
76
|
+
installing Shapely with pip from PyPI, you clone the package from Github::
|
|
67
77
|
|
|
68
78
|
$ git clone git@github.com:shapely/shapely.git
|
|
69
79
|
$ cd shapely/
|
|
@@ -72,8 +82,8 @@ Install it in development mode using ``pip``::
|
|
|
72
82
|
|
|
73
83
|
$ pip install -e .[test]
|
|
74
84
|
|
|
75
|
-
For development, use of a virtual environment is strongly recommended. For
|
|
76
|
-
using ``venv``:
|
|
85
|
+
For development, use of a virtual environment is strongly recommended. For
|
|
86
|
+
example using ``venv``:
|
|
77
87
|
|
|
78
88
|
.. code-block:: console
|
|
79
89
|
|
|
@@ -101,9 +111,10 @@ Shapely can be tested using ``pytest``::
|
|
|
101
111
|
GEOS discovery (compile time)
|
|
102
112
|
-----------------------------
|
|
103
113
|
|
|
104
|
-
If GEOS is installed on Linux or macOS, the ``geos-config`` command line
|
|
105
|
-
should be available and ``pip`` will find GEOS automatically.
|
|
106
|
-
If the correct ``geos-config`` is not on the PATH, you can add it as follows
|
|
114
|
+
If GEOS is installed on Linux or macOS, the ``geos-config`` command line
|
|
115
|
+
utility should be available and ``pip`` will find GEOS automatically.
|
|
116
|
+
If the correct ``geos-config`` is not on the PATH, you can add it as follows
|
|
117
|
+
(on Linux/macOS)::
|
|
107
118
|
|
|
108
119
|
$ export PATH=/path/to/geos/bin:$PATH
|
|
109
120
|
|
|
@@ -113,8 +124,8 @@ header files using environment variables (on Linux/macOS)::
|
|
|
113
124
|
$ export GEOS_INCLUDE_PATH=/path/to/geos/include
|
|
114
125
|
$ export GEOS_LIBRARY_PATH=/path/to/geos/lib
|
|
115
126
|
|
|
116
|
-
On Windows, there is no ``geos-config`` and the include and lib folders need to
|
|
117
|
-
specified manually in any case::
|
|
127
|
+
On Windows, there is no ``geos-config`` and the include and lib folders need to
|
|
128
|
+
be specified manually in any case::
|
|
118
129
|
|
|
119
130
|
$ set GEOS_INCLUDE_PATH=C:\path\to\geos\include
|
|
120
131
|
$ set GEOS_LIBRARY_PATH=C:\path\to\geos\lib
|
|
@@ -129,13 +140,15 @@ Common locations of GEOS (to be suffixed by ``lib``, ``include`` or ``bin``):
|
|
|
129
140
|
GEOS discovery (runtime)
|
|
130
141
|
------------------------
|
|
131
142
|
|
|
132
|
-
Shapely is dynamically linked to GEOS. This means that the same GEOS library
|
|
133
|
-
during Shapely compilation is required on your system at runtime.
|
|
134
|
-
as a binary wheel or through conda,
|
|
143
|
+
Shapely is dynamically linked to GEOS. This means that the same GEOS library
|
|
144
|
+
that was used during Shapely compilation is required on your system at runtime.
|
|
145
|
+
When using Shapely that was distributed as a binary wheel or through conda,
|
|
146
|
+
this is automatically the case and you can stop reading.
|
|
135
147
|
|
|
136
|
-
In other cases this can be tricky, especially if you have multiple GEOS
|
|
137
|
-
to each other. We only include some guidelines here to
|
|
138
|
-
not intended as a general guide of
|
|
148
|
+
In other cases this can be tricky, especially if you have multiple GEOS
|
|
149
|
+
installations next to each other. We only include some guidelines here to
|
|
150
|
+
address this issue as this document is not intended as a general guide of
|
|
151
|
+
shared library discovery.
|
|
139
152
|
|
|
140
153
|
If you encounter exceptions like:
|
|
141
154
|
|
|
@@ -143,17 +156,21 @@ If you encounter exceptions like:
|
|
|
143
156
|
|
|
144
157
|
ImportError: libgeos_c.so.1: cannot open shared object file: No such file or directory
|
|
145
158
|
|
|
146
|
-
You will have to make the shared library file available to the Python
|
|
147
|
-
general four ways of making Python aware of the
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
this
|
|
155
|
-
|
|
156
|
-
(
|
|
159
|
+
You will have to make the shared library file available to the Python
|
|
160
|
+
interpreter. There are in general four ways of making Python aware of the
|
|
161
|
+
location of shared library:
|
|
162
|
+
|
|
163
|
+
1. Copy the shared libraries into the ``shapely`` module directory (this is how
|
|
164
|
+
Windows binary wheels work: they are distributed with the correct dlls in
|
|
165
|
+
the ``shapely`` module directory)
|
|
166
|
+
2. Copy the shared libraries into the library directory of the Python
|
|
167
|
+
interpreter (this is how Anaconda environments work)
|
|
168
|
+
3. Copy the shared libraries into some system location
|
|
169
|
+
(``C:\Windows\System32``; ``/usr/local/lib``, this happens if you installed
|
|
170
|
+
GEOS through ``apt`` or ``brew``)
|
|
171
|
+
4. Add the shared library location to a the dynamic linker path variable at
|
|
172
|
+
runtime. (Advanced usage; Linux and macOS only; on Windows this method was
|
|
173
|
+
deprecated in Python 3.8)
|
|
157
174
|
|
|
158
175
|
The filenames of the GEOS shared libraries are:
|
|
159
176
|
|