shapely 2.0.7__tar.gz → 2.1.0__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.0}/CHANGES.txt +25 -2
- {shapely-2.0.7 → shapely-2.1.0}/CITATION.cff +2 -2
- {shapely-2.0.7 → shapely-2.1.0}/PKG-INFO +10 -11
- {shapely-2.0.7 → shapely-2.1.0}/README.rst +4 -4
- shapely-2.1.0/docs/coverage.rst +13 -0
- {shapely-2.0.7 → shapely-2.1.0}/docs/design.rst +0 -1
- {shapely-2.0.7 → shapely-2.1.0}/docs/geometry.rst +8 -8
- {shapely-2.0.7 → shapely-2.1.0}/docs/index.rst +2 -0
- {shapely-2.0.7 → shapely-2.1.0}/docs/installation.rst +49 -32
- {shapely-2.0.7 → shapely-2.1.0}/docs/io.rst +0 -1
- {shapely-2.0.7 → shapely-2.1.0}/docs/manual.rst +226 -185
- {shapely-2.0.7 → shapely-2.1.0}/docs/migration.rst +10 -8
- {shapely-2.0.7 → shapely-2.1.0}/docs/migration_pygeos.rst +6 -4
- shapely-2.1.0/docs/plotting.rst +12 -0
- {shapely-2.0.7 → shapely-2.1.0}/docs/strtree.rst +1 -1
- {shapely-2.0.7 → shapely-2.1.0}/docs/testing.rst +2 -2
- shapely-2.1.0/pyproject.toml +188 -0
- {shapely-2.0.7 → shapely-2.1.0}/setup.cfg +0 -12
- {shapely-2.0.7 → shapely-2.1.0}/setup.py +53 -63
- shapely-2.1.0/shapely/__init__.py +36 -0
- shapely-2.1.0/shapely/_coverage.py +168 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/_enum.py +1 -1
- {shapely-2.0.7 → shapely-2.1.0}/shapely/_geometry.py +317 -165
- shapely-2.1.0/shapely/_geometry_helpers.pyx +730 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/_geos.pxd +10 -4
- {shapely-2.0.7 → shapely-2.1.0}/shapely/_geos.pyx +0 -1
- {shapely-2.0.7 → shapely-2.1.0}/shapely/_pygeos_api.pxd +26 -3
- {shapely-2.0.7 → shapely-2.1.0}/shapely/_ragged_array.py +117 -95
- {shapely-2.0.7 → shapely-2.1.0}/shapely/_version.py +3 -3
- {shapely-2.0.7 → shapely-2.1.0}/shapely/affinity.py +6 -6
- shapely-2.1.0/shapely/algorithms/__init__.py +1 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/algorithms/_oriented_envelope.py +1 -3
- shapely-2.1.0/shapely/algorithms/cga.py +50 -0
- shapely-2.1.0/shapely/algorithms/polylabel.py +43 -0
- shapely-2.1.0/shapely/conftest.py +70 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/constructive.py +679 -197
- shapely-2.1.0/shapely/coordinates.py +335 -0
- shapely-2.1.0/shapely/coords.py +119 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/creation.py +372 -96
- {shapely-2.0.7 → shapely-2.1.0}/shapely/decorators.py +54 -3
- {shapely-2.0.7 → shapely-2.1.0}/shapely/errors.py +13 -15
- {shapely-2.0.7 → shapely-2.1.0}/shapely/geometry/__init__.py +11 -12
- {shapely-2.0.7 → shapely-2.1.0}/shapely/geometry/base.py +302 -191
- {shapely-2.0.7 → shapely-2.1.0}/shapely/geometry/collection.py +11 -11
- {shapely-2.0.7 → shapely-2.1.0}/shapely/geometry/geo.py +23 -15
- {shapely-2.0.7 → shapely-2.1.0}/shapely/geometry/linestring.py +53 -30
- {shapely-2.0.7 → shapely-2.1.0}/shapely/geometry/multilinestring.py +11 -9
- {shapely-2.0.7 → shapely-2.1.0}/shapely/geometry/multipoint.py +25 -16
- {shapely-2.0.7 → shapely-2.1.0}/shapely/geometry/multipolygon.py +13 -14
- {shapely-2.0.7 → shapely-2.1.0}/shapely/geometry/point.py +44 -23
- {shapely-2.0.7 → shapely-2.1.0}/shapely/geometry/polygon.py +55 -65
- shapely-2.1.0/shapely/geos.py +17 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/io.py +91 -56
- {shapely-2.0.7 → shapely-2.1.0}/shapely/linear.py +69 -36
- {shapely-2.0.7 → shapely-2.1.0}/shapely/measurement.py +93 -64
- {shapely-2.0.7 → shapely-2.1.0}/shapely/ops.py +90 -108
- {shapely-2.0.7 → shapely-2.1.0}/shapely/plotting.py +17 -12
- {shapely-2.0.7 → shapely-2.1.0}/shapely/predicates.py +438 -243
- shapely-2.1.0/shapely/prepared.py +74 -0
- shapely-2.1.0/shapely/set_operations.py +784 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/speedups.py +12 -9
- {shapely-2.0.7 → shapely-2.1.0}/shapely/strtree.py +36 -30
- {shapely-2.0.7 → shapely-2.1.0}/shapely/testing.py +12 -8
- shapely-2.1.0/shapely/tests/common.py +285 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_collection.py +14 -1
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_coords.py +31 -6
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_decimal.py +28 -28
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_equality.py +78 -31
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_format.py +29 -27
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_geometry_base.py +90 -2
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_linestring.py +22 -3
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_multi.py +1 -1
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_multilinestring.py +0 -1
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_multipoint.py +17 -2
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_multipolygon.py +22 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_point.py +23 -10
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_polygon.py +4 -7
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/conftest.py +0 -9
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_affinity.py +4 -7
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_buffer.py +3 -2
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_cga.py +1 -1
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_clip_by_rect.py +1 -2
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_create_inconsistent_dimensionality.py +8 -5
- shapely-2.1.0/shapely/tests/legacy/test_equality.py +24 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_invalid_geometries.py +1 -3
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_linemerge.py +0 -1
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_locale.py +2 -4
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_make_valid.py +0 -3
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_mapping.py +1 -1
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_minimum_clearance.py +2 -12
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_operations.py +5 -3
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_orient.py +28 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_persist.py +2 -5
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_pickle.py +4 -7
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_polygonize.py +0 -1
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_polylabel.py +24 -39
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_predicates.py +2 -6
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_prepared.py +4 -1
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_shape.py +16 -1
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_snap.py +0 -1
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_split.py +41 -5
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_substring.py +1 -1
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_union.py +3 -7
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_vectorized.py +4 -1
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_voronoi_diagram.py +1 -18
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_wkb.py +4 -21
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_wkt.py +2 -2
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/threading_test.py +6 -6
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_constructive.py +413 -33
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_coordinates.py +188 -32
- shapely-2.1.0/shapely/tests/test_coverage.py +249 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_creation.py +150 -2
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_creation_indices.py +168 -1
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_geometry.py +89 -88
- shapely-2.1.0/shapely/tests/test_io.py +1351 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_linear.py +15 -3
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_measurement.py +0 -11
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_misc.py +8 -14
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_plotting.py +21 -3
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_predicates.py +95 -12
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_ragged_array.py +210 -21
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_set_operations.py +87 -54
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_strtree.py +12 -34
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/test_testing.py +2 -8
- {shapely-2.0.7 → shapely-2.1.0}/shapely/validation.py +10 -10
- {shapely-2.0.7 → shapely-2.1.0}/shapely/vectorized/__init__.py +22 -6
- {shapely-2.0.7 → shapely-2.1.0}/shapely/wkb.py +11 -5
- {shapely-2.0.7 → shapely-2.1.0}/shapely/wkt.py +14 -19
- {shapely-2.0.7 → shapely-2.1.0}/shapely.egg-info/PKG-INFO +10 -11
- {shapely-2.0.7 → shapely-2.1.0}/shapely.egg-info/SOURCES.txt +7 -1
- {shapely-2.0.7 → shapely-2.1.0}/shapely.egg-info/requires.txt +2 -1
- shapely-2.1.0/src/c_api.c +31 -0
- {shapely-2.0.7 → shapely-2.1.0}/src/c_api.h +9 -6
- {shapely-2.0.7 → shapely-2.1.0}/src/coords.c +24 -24
- {shapely-2.0.7 → shapely-2.1.0}/src/fast_loop_macros.h +14 -3
- {shapely-2.0.7 → shapely-2.1.0}/src/geos.c +375 -183
- {shapely-2.0.7 → shapely-2.1.0}/src/geos.h +37 -15
- {shapely-2.0.7 → shapely-2.1.0}/src/lib.c +6 -2
- {shapely-2.0.7 → shapely-2.1.0}/src/pygeom.c +36 -36
- shapely-2.1.0/src/pygeos.c +258 -0
- shapely-2.1.0/src/pygeos.h +8 -0
- {shapely-2.0.7 → shapely-2.1.0}/src/strtree.c +3 -9
- {shapely-2.0.7 → shapely-2.1.0}/src/ufuncs.c +549 -247
- {shapely-2.0.7 → shapely-2.1.0}/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.0}/CREDITS.txt +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/LICENSE.txt +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/docs/constructive.rst +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/docs/coordinates.rst +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/docs/creation.rst +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/docs/linear.rst +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/docs/measurement.rst +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/docs/predicates.rst +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/docs/properties.rst +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/docs/release.rst +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/docs/set_operations.rst +0 -0
- {shapely-2.0.7/shapely/algorithms → shapely-2.1.0/shapely/tests}/__init__.py +0 -0
- {shapely-2.0.7/shapely/tests → shapely-2.1.0/shapely/tests/geometry}/__init__.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_emptiness.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/geometry/test_hash.py +0 -0
- {shapely-2.0.7/shapely/tests/geometry → shapely-2.1.0/shapely/tests/legacy}/__init__.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_box.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_delaunay.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_empty_polygons.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_geointerface.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_linear_referencing.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_ndarrays.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_nearest.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_operators.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_parallel_offset.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_products_z.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_shared_paths.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_singularity.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_svg.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_transform.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely/tests/legacy/test_validation.py +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely.egg-info/dependency_links.txt +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/shapely.egg-info/top_level.txt +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/src/coords.h +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/src/kvec.h +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/src/pygeom.h +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/src/strtree.h +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/src/ufuncs.h +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/src/vector.h +0 -0
- {shapely-2.0.7 → shapely-2.1.0}/versioneer.py +0 -0
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
Changes
|
|
2
2
|
=======
|
|
3
3
|
|
|
4
|
+
2.1.0 (2025-04-03)
|
|
5
|
+
------------------
|
|
6
|
+
|
|
7
|
+
Shapely 2.1.0 is a feature release with various new functions,
|
|
8
|
+
improvements and bug fixes. Highlights include initial support for geometries
|
|
9
|
+
with M or ZM values, functionality for coverage validation and
|
|
10
|
+
simplification, and a set of new top-level functions.
|
|
11
|
+
|
|
12
|
+
Shapely supports Python >= 3.10, and binary wheels on PyPI include GEOS 3.13.1
|
|
13
|
+
and are now also provided for musllinux (Alpine) x86_64 platforms.
|
|
14
|
+
|
|
15
|
+
For a full changelog, see
|
|
16
|
+
https://shapely.readthedocs.io/en/latest/release/2.x.html#version-2-1-0
|
|
17
|
+
|
|
18
|
+
|
|
4
19
|
2.0.7 (2025-01-30)
|
|
5
20
|
------------------
|
|
6
21
|
|
|
@@ -46,6 +61,7 @@ Bug fixes:
|
|
|
46
61
|
- Fix bug in ``to_wkt`` with multiple empty Z geometries (#2012).
|
|
47
62
|
- Fix bug in ``to_ragged_array`` for an array of Points with missing values (#2034).
|
|
48
63
|
|
|
64
|
+
|
|
49
65
|
2.0.3 (2024-02-16)
|
|
50
66
|
------------------
|
|
51
67
|
|
|
@@ -55,6 +71,7 @@ Bug fixes:
|
|
|
55
71
|
therefore a ``numpy<2`` upper pin was added to the requirements (#1972).
|
|
56
72
|
- Upgraded the GEOS version in the binary wheel distributions to 3.11.3.
|
|
57
73
|
|
|
74
|
+
|
|
58
75
|
2.0.2 (2023-10-12)
|
|
59
76
|
------------------
|
|
60
77
|
|
|
@@ -66,11 +83,16 @@ Bug fixes:
|
|
|
66
83
|
- Fix ``minimum_rotated_rectangle`` (``oriented_envelope``) to always return
|
|
67
84
|
the minimum area solution (instead of minimum width). In practice, it will use the
|
|
68
85
|
GEOS implementation only for GEOS 3.12+, and for older GEOS versions fall back to the
|
|
69
|
-
implementation that was included in Shapely < 2.
|
|
86
|
+
implementation that was included in Shapely < 2 (#1670).
|
|
87
|
+
- Fix ``from_ragged_array`` to work with read-only array input (#1744).
|
|
88
|
+
- Fix the handling of z coordinates ``shapely.ops.substring`` (#1699).
|
|
70
89
|
|
|
71
90
|
Wheels are available for Python 3.12 (and still include GEOS 3.11.2). Building
|
|
72
91
|
from source is now compatible with Cython 3.
|
|
73
92
|
|
|
93
|
+
For a full changelog, see
|
|
94
|
+
https://shapely.readthedocs.io/en/latest/release/2.x.html#version-2-0-2
|
|
95
|
+
|
|
74
96
|
2.0.1 (2023-01-30)
|
|
75
97
|
------------------
|
|
76
98
|
|
|
@@ -91,12 +113,13 @@ Improvements:
|
|
|
91
113
|
For a full changelog, see
|
|
92
114
|
https://shapely.readthedocs.io/en/latest/release/2.x.html#version-2-0-1
|
|
93
115
|
|
|
116
|
+
|
|
94
117
|
2.0.0 (2022-12-12)
|
|
95
118
|
------------------
|
|
96
119
|
|
|
97
120
|
Shapely version 2.0.0 is a major release featuring a complete refactor of the
|
|
98
121
|
internals and new vectorized (element-wise) array operations providing
|
|
99
|
-
considerable performance improvements.
|
|
122
|
+
considerable performance improvements.
|
|
100
123
|
|
|
101
124
|
For a full changelog, see
|
|
102
125
|
https://shapely.readthedocs.io/en/latest/release/2.x.html#version-2-0-0
|
|
@@ -2,8 +2,8 @@ cff-version: 1.2.0
|
|
|
2
2
|
message: "Please cite this software using these metadata."
|
|
3
3
|
type: software
|
|
4
4
|
title: Shapely
|
|
5
|
-
version: "2.0
|
|
6
|
-
date-released: "2025-
|
|
5
|
+
version: "2.1.0"
|
|
6
|
+
date-released: "2025-04-03"
|
|
7
7
|
doi: 10.5281/zenodo.5597138
|
|
8
8
|
abstract: "Manipulation and analysis of geometric objects in the Cartesian plane."
|
|
9
9
|
repository-artifact: https://pypi.org/project/Shapely
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: shapely
|
|
3
|
-
Version: 2.0
|
|
3
|
+
Version: 2.1.0
|
|
4
4
|
Summary: Manipulation and analysis of geometric objects
|
|
5
5
|
Author: Sean Gillies
|
|
6
6
|
Maintainer: Shapely contributors
|
|
@@ -16,27 +16,26 @@ 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"
|
|
37
35
|
Requires-Dist: sphinx; extra == "docs"
|
|
38
36
|
Requires-Dist: sphinx-book-theme; extra == "docs"
|
|
39
37
|
Requires-Dist: sphinx-remove-toctrees; extra == "docs"
|
|
38
|
+
Dynamic: license-file
|
|
40
39
|
|
|
41
40
|
=======
|
|
42
41
|
Shapely
|
|
@@ -143,11 +142,11 @@ See the documentation for more examples and guidance: https://shapely.readthedoc
|
|
|
143
142
|
Requirements
|
|
144
143
|
============
|
|
145
144
|
|
|
146
|
-
Shapely 2.
|
|
145
|
+
Shapely 2.1 requires
|
|
147
146
|
|
|
148
|
-
* Python >=3.
|
|
149
|
-
* GEOS >=3.
|
|
150
|
-
* NumPy >=1.
|
|
147
|
+
* Python >=3.10
|
|
148
|
+
* GEOS >=3.9
|
|
149
|
+
* NumPy >=1.21
|
|
151
150
|
|
|
152
151
|
Installing Shapely
|
|
153
152
|
==================
|
|
@@ -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
|
|