shapely 1.5.7__tar.gz → 1.5.9__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-1.5.7 → Shapely-1.5.9}/CHANGES.txt +12 -1
- {Shapely-1.5.7/Shapely.egg-info → Shapely-1.5.9}/PKG-INFO +13 -2
- {Shapely-1.5.7 → Shapely-1.5.9/Shapely.egg-info}/PKG-INFO +13 -2
- Shapely-1.5.9/VERSION.txt +1 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/setup.py +1 -1
- Shapely-1.5.9/shapely/__init__.py +1 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/_geos.pxi +1 -1
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/ctypes_declarations.py +24 -5
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/geometry/base.py +4 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/geos.py +23 -3
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/impl.py +6 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/prepared.py +32 -4
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/speedups/_speedups.c +1080 -980
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/speedups/_speedups.pyx +27 -25
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_predicates.py +2 -0
- Shapely-1.5.9/tests/test_prepared.py +51 -0
- Shapely-1.5.7/VERSION.txt +0 -1
- Shapely-1.5.7/shapely/__init__.py +0 -1
- Shapely-1.5.7/tests/test_prepared.py +0 -31
- {Shapely-1.5.7 → Shapely-1.5.9}/CREDITS.txt +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/LICENSE.txt +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/README.rst +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/Shapely.egg-info/SOURCES.txt +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/Shapely.egg-info/dependency_links.txt +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/Shapely.egg-info/top_level.txt +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/docs/design.rst +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/docs/index.rst +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/docs/manual.rst +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/docs/project.rst +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/setup.cfg +1 -1
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/affinity.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/algorithms/__init__.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/algorithms/cga.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/coords.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/examples/__init__.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/examples/dissolve.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/examples/geoms.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/examples/intersect.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/ftools.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/geometry/__init__.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/geometry/collection.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/geometry/geo.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/geometry/linestring.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/geometry/multilinestring.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/geometry/multipoint.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/geometry/multipolygon.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/geometry/point.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/geometry/polygon.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/geometry/proxy.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/iterops.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/linref.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/ops.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/predicates.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/speedups/__init__.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/strtree.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/topology.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/validation.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/vectorized/__init__.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/vectorized/_vectorized.pyx +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/wkb.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/shapely/wkt.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/__init__.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/binascii_hex.txt +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/conftest.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_affinity.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_box.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_cga.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_collection.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_coords.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_delaunay.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_delegated.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_dlls.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_doctests.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_emptiness.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_equality.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_geointerface.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_geomseq.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_geos_err_handler.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_getitem.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_hash.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_invalid_geometries.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_iterops.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_linear_referencing.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_linemerge.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_linestring.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_locale.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_mapping.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_multilinestring.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_multipoint.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_multipolygon.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_ndarrays.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_nearest.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_operations.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_operators.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_persist.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_pickle.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_point.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_polygon.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_polygonize.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_products_z.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_singularity.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_snap.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_strtree.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_styles.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_svg.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_transform.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_union.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_validation.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_vectorized.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/test_xy.py +0 -0
- {Shapely-1.5.7 → Shapely-1.5.9}/tests/threading_test.py +0 -0
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
Changes
|
|
2
2
|
=======
|
|
3
3
|
|
|
4
|
-
1.5.
|
|
4
|
+
1.5.9 (2015-05-27)
|
|
5
|
+
------------------
|
|
6
|
+
- Fix for 64 bit speedups compatibility (#274).
|
|
7
|
+
|
|
8
|
+
1.5.8 (2015-04-29)
|
|
9
|
+
------------------
|
|
10
|
+
- Setup file encoding bug fix (#254).
|
|
11
|
+
- Support for pyinstaller (#261).
|
|
12
|
+
- Major prepared geometry operation fix for Windows (#268, #269).
|
|
13
|
+
- Major fix for OS X binary wheel (#262).
|
|
14
|
+
|
|
15
|
+
1.5.7 (2015-03-16)
|
|
5
16
|
------------------
|
|
6
17
|
- Test and fix buggy error and notice handlers (#249).
|
|
7
18
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 1.1
|
|
2
2
|
Name: Shapely
|
|
3
|
-
Version: 1.5.
|
|
3
|
+
Version: 1.5.9
|
|
4
4
|
Summary: Geometric objects, predicates, and operations
|
|
5
5
|
Home-page: https://github.com/Toblerity/Shapely
|
|
6
6
|
Author: Sean Gillies
|
|
@@ -215,7 +215,18 @@ Description: =======
|
|
|
215
215
|
Changes
|
|
216
216
|
=======
|
|
217
217
|
|
|
218
|
-
1.5.
|
|
218
|
+
1.5.9 (2015-05-27)
|
|
219
|
+
------------------
|
|
220
|
+
- Fix for 64 bit speedups compatibility (#274).
|
|
221
|
+
|
|
222
|
+
1.5.8 (2015-04-29)
|
|
223
|
+
------------------
|
|
224
|
+
- Setup file encoding bug fix (#254).
|
|
225
|
+
- Support for pyinstaller (#261).
|
|
226
|
+
- Major prepared geometry operation fix for Windows (#268, #269).
|
|
227
|
+
- Major fix for OS X binary wheel (#262).
|
|
228
|
+
|
|
229
|
+
1.5.7 (2015-03-16)
|
|
219
230
|
------------------
|
|
220
231
|
- Test and fix buggy error and notice handlers (#249).
|
|
221
232
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 1.1
|
|
2
2
|
Name: Shapely
|
|
3
|
-
Version: 1.5.
|
|
3
|
+
Version: 1.5.9
|
|
4
4
|
Summary: Geometric objects, predicates, and operations
|
|
5
5
|
Home-page: https://github.com/Toblerity/Shapely
|
|
6
6
|
Author: Sean Gillies
|
|
@@ -215,7 +215,18 @@ Description: =======
|
|
|
215
215
|
Changes
|
|
216
216
|
=======
|
|
217
217
|
|
|
218
|
-
1.5.
|
|
218
|
+
1.5.9 (2015-05-27)
|
|
219
|
+
------------------
|
|
220
|
+
- Fix for 64 bit speedups compatibility (#274).
|
|
221
|
+
|
|
222
|
+
1.5.8 (2015-04-29)
|
|
223
|
+
------------------
|
|
224
|
+
- Setup file encoding bug fix (#254).
|
|
225
|
+
- Support for pyinstaller (#261).
|
|
226
|
+
- Major prepared geometry operation fix for Windows (#268, #269).
|
|
227
|
+
- Major fix for OS X binary wheel (#262).
|
|
228
|
+
|
|
229
|
+
1.5.7 (2015-03-16)
|
|
219
230
|
------------------
|
|
220
231
|
- Test and fix buggy error and notice handlers (#249).
|
|
221
232
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.5.9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.5.9"
|
|
@@ -13,7 +13,7 @@ cdef extern from "geos_c.h":
|
|
|
13
13
|
GEOSCoordSequence *GEOSCoordSeq_create_r(GEOSContextHandle_t, unsigned int, unsigned int) nogil
|
|
14
14
|
GEOSCoordSequence *GEOSGeom_getCoordSeq_r(GEOSContextHandle_t, GEOSGeometry *) nogil
|
|
15
15
|
|
|
16
|
-
int GEOSCoordSeq_getSize_r(GEOSContextHandle_t, GEOSCoordSequence *, int *) nogil
|
|
16
|
+
int GEOSCoordSeq_getSize_r(GEOSContextHandle_t, GEOSCoordSequence *, unsigned int *) nogil
|
|
17
17
|
int GEOSCoordSeq_setX_r(GEOSContextHandle_t, GEOSCoordSequence *, int, double) nogil
|
|
18
18
|
int GEOSCoordSeq_setY_r(GEOSContextHandle_t, GEOSCoordSequence *, int, double) nogil
|
|
19
19
|
int GEOSCoordSeq_setZ_r(GEOSContextHandle_t, GEOSCoordSequence *, int, double) nogil
|
|
@@ -249,6 +249,9 @@ def prototype(lgeos, geos_version):
|
|
|
249
249
|
lgeos.GEOSOverlaps.restype = c_byte
|
|
250
250
|
lgeos.GEOSOverlaps.argtypes = [c_void_p, c_void_p]
|
|
251
251
|
|
|
252
|
+
lgeos.GEOSCovers.restype = c_byte
|
|
253
|
+
lgeos.GEOSCovers.argtypes = [c_void_p, c_void_p]
|
|
254
|
+
|
|
252
255
|
lgeos.GEOSEquals.restype = c_byte
|
|
253
256
|
lgeos.GEOSEquals.argtypes = [c_void_p, c_void_p]
|
|
254
257
|
|
|
@@ -306,17 +309,33 @@ def prototype(lgeos, geos_version):
|
|
|
306
309
|
lgeos.GEOSPreparedGeom_destroy.restype = None
|
|
307
310
|
lgeos.GEOSPreparedGeom_destroy.argtypes = [c_void_p]
|
|
308
311
|
|
|
309
|
-
lgeos.
|
|
312
|
+
lgeos.GEOSPreparedDisjoint.restype = c_byte
|
|
313
|
+
lgeos.GEOSPreparedDisjoint.argtypes = [c_void_p, c_void_p]
|
|
314
|
+
|
|
315
|
+
lgeos.GEOSPreparedTouches.restype = c_byte
|
|
316
|
+
lgeos.GEOSPreparedTouches.argtypes = [c_void_p, c_void_p]
|
|
317
|
+
|
|
318
|
+
lgeos.GEOSPreparedIntersects.restype = c_byte
|
|
319
|
+
lgeos.GEOSPreparedIntersects.argtypes = [c_void_p, c_void_p]
|
|
320
|
+
|
|
321
|
+
lgeos.GEOSPreparedCrosses.restype = c_byte
|
|
322
|
+
lgeos.GEOSPreparedCrosses.argtypes = [c_void_p, c_void_p]
|
|
323
|
+
|
|
324
|
+
lgeos.GEOSPreparedWithin.restype = c_byte
|
|
325
|
+
lgeos.GEOSPreparedWithin.argtypes = [c_void_p, c_void_p]
|
|
326
|
+
|
|
327
|
+
lgeos.GEOSPreparedContains.restype = c_byte
|
|
310
328
|
lgeos.GEOSPreparedContains.argtypes = [c_void_p, c_void_p]
|
|
311
329
|
|
|
312
|
-
lgeos.GEOSPreparedContainsProperly.restype =
|
|
330
|
+
lgeos.GEOSPreparedContainsProperly.restype = c_byte
|
|
313
331
|
lgeos.GEOSPreparedContainsProperly.argtypes = [c_void_p, c_void_p]
|
|
314
332
|
|
|
315
|
-
lgeos.
|
|
333
|
+
lgeos.GEOSPreparedOverlaps.restype = c_byte
|
|
334
|
+
lgeos.GEOSPreparedOverlaps.argtypes = [c_void_p, c_void_p]
|
|
335
|
+
|
|
336
|
+
lgeos.GEOSPreparedCovers.restype = c_byte
|
|
316
337
|
lgeos.GEOSPreparedCovers.argtypes = [c_void_p, c_void_p]
|
|
317
338
|
|
|
318
|
-
lgeos.GEOSPreparedIntersects.restype = c_int
|
|
319
|
-
lgeos.GEOSPreparedIntersects.argtypes = [c_void_p, c_void_p]
|
|
320
339
|
|
|
321
340
|
'''
|
|
322
341
|
Geometry info
|
|
@@ -616,6 +616,10 @@ class BaseGeometry(object):
|
|
|
616
616
|
(string)"""
|
|
617
617
|
return self.impl['relate'](self, other)
|
|
618
618
|
|
|
619
|
+
def covers(self, other):
|
|
620
|
+
"""Returns True if the geometry covers the other, else False"""
|
|
621
|
+
return bool(self.impl['covers'](self, other))
|
|
622
|
+
|
|
619
623
|
def contains(self, other):
|
|
620
624
|
"""Returns True if the geometry contains the other, else False"""
|
|
621
625
|
return bool(self.impl['contains'](self, other))
|
|
@@ -68,9 +68,13 @@ elif sys.platform == 'darwin':
|
|
|
68
68
|
_lgeos = CDLL(geos_whl_dylib)
|
|
69
69
|
else:
|
|
70
70
|
if hasattr(sys, 'frozen'):
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
try:
|
|
72
|
+
# .app file from py2app
|
|
73
|
+
alt_paths = [os.path.join(os.environ['RESOURCEPATH'],
|
|
74
|
+
'..', 'Frameworks', 'libgeos_c.dylib')]
|
|
75
|
+
except KeyError:
|
|
76
|
+
# binary from pyinstaller
|
|
77
|
+
alt_paths = [os.path.join(sys.executable, 'libgeos_c.dylib')]
|
|
74
78
|
else:
|
|
75
79
|
alt_paths = [
|
|
76
80
|
# The Framework build from Kyng Chaos
|
|
@@ -642,8 +646,18 @@ class LGEOS310(LGEOSBase):
|
|
|
642
646
|
self.GEOSWithin,
|
|
643
647
|
self.GEOSContains,
|
|
644
648
|
self.GEOSOverlaps,
|
|
649
|
+
self.GEOSCovers,
|
|
645
650
|
self.GEOSEquals,
|
|
646
651
|
self.GEOSEqualsExact,
|
|
652
|
+
self.GEOSPreparedDisjoint,
|
|
653
|
+
self.GEOSPreparedTouches,
|
|
654
|
+
self.GEOSPreparedCrosses,
|
|
655
|
+
self.GEOSPreparedWithin,
|
|
656
|
+
self.GEOSPreparedOverlaps,
|
|
657
|
+
self.GEOSPreparedContains,
|
|
658
|
+
self.GEOSPreparedContainsProperly,
|
|
659
|
+
self.GEOSPreparedCovers,
|
|
660
|
+
self.GEOSPreparedIntersects,
|
|
647
661
|
self.GEOSisEmpty,
|
|
648
662
|
self.GEOSisValid,
|
|
649
663
|
self.GEOSisSimple,
|
|
@@ -674,6 +688,7 @@ class LGEOS310(LGEOSBase):
|
|
|
674
688
|
self.methods['within'] = self.GEOSWithin
|
|
675
689
|
self.methods['contains'] = self.GEOSContains
|
|
676
690
|
self.methods['overlaps'] = self.GEOSOverlaps
|
|
691
|
+
self.methods['covers'] = self.GEOSCovers
|
|
677
692
|
self.methods['equals'] = self.GEOSEquals
|
|
678
693
|
self.methods['equals_exact'] = self.GEOSEqualsExact
|
|
679
694
|
self.methods['relate'] = self.GEOSRelate
|
|
@@ -681,10 +696,15 @@ class LGEOS310(LGEOSBase):
|
|
|
681
696
|
self.methods['symmetric_difference'] = self.GEOSSymDifference
|
|
682
697
|
self.methods['union'] = self.GEOSUnion
|
|
683
698
|
self.methods['intersection'] = self.GEOSIntersection
|
|
699
|
+
self.methods['prepared_disjoint'] = self.GEOSPreparedDisjoint
|
|
700
|
+
self.methods['prepared_touches'] = self.GEOSPreparedTouches
|
|
684
701
|
self.methods['prepared_intersects'] = self.GEOSPreparedIntersects
|
|
702
|
+
self.methods['prepared_crosses'] = self.GEOSPreparedCrosses
|
|
703
|
+
self.methods['prepared_within'] = self.GEOSPreparedWithin
|
|
685
704
|
self.methods['prepared_contains'] = self.GEOSPreparedContains
|
|
686
705
|
self.methods['prepared_contains_properly'] = \
|
|
687
706
|
self.GEOSPreparedContainsProperly
|
|
707
|
+
self.methods['prepared_overlaps'] = self.GEOSPreparedOverlaps
|
|
688
708
|
self.methods['prepared_covers'] = self.GEOSPreparedCovers
|
|
689
709
|
self.methods['simplify'] = self.GEOSSimplify
|
|
690
710
|
self.methods['topology_preserve_simplify'] = \
|
|
@@ -83,6 +83,7 @@ IMPL300 = {
|
|
|
83
83
|
'overlaps': (BinaryPredicate, 'overlaps'),
|
|
84
84
|
'touches': (BinaryPredicate, 'touches'),
|
|
85
85
|
'within': (BinaryPredicate, 'within'),
|
|
86
|
+
'covers': (BinaryPredicate, 'covers'),
|
|
86
87
|
'equals_exact': (BinaryPredicate, 'equals_exact'),
|
|
87
88
|
|
|
88
89
|
# First pure Python implementation
|
|
@@ -93,6 +94,11 @@ IMPL310 = {
|
|
|
93
94
|
'simplify': (UnaryTopologicalOp, 'simplify'),
|
|
94
95
|
'topology_preserve_simplify':
|
|
95
96
|
(UnaryTopologicalOp, 'topology_preserve_simplify'),
|
|
97
|
+
'prepared_disjoint': (BinaryPredicate, 'prepared_disjoint'),
|
|
98
|
+
'prepared_touches': (BinaryPredicate, 'prepared_touches'),
|
|
99
|
+
'prepared_crosses': (BinaryPredicate, 'prepared_crosses'),
|
|
100
|
+
'prepared_within': (BinaryPredicate, 'prepared_within'),
|
|
101
|
+
'prepared_overlaps': (BinaryPredicate, 'prepared_overlaps'),
|
|
96
102
|
'prepared_intersects': (BinaryPredicate, 'prepared_intersects'),
|
|
97
103
|
'prepared_contains': (BinaryPredicate, 'prepared_contains'),
|
|
98
104
|
'prepared_contains_properly':
|
|
@@ -37,23 +37,51 @@ class PreparedGeometry(object):
|
|
|
37
37
|
@property
|
|
38
38
|
def _geom(self):
|
|
39
39
|
return self.__geom__
|
|
40
|
-
|
|
41
|
-
@delegated
|
|
42
|
-
def intersects(self, other):
|
|
43
|
-
return bool(self.impl['prepared_intersects'](self, other))
|
|
44
40
|
|
|
45
41
|
@delegated
|
|
46
42
|
def contains(self, other):
|
|
43
|
+
"""Returns True if the geometry contains the other, else False"""
|
|
47
44
|
return bool(self.impl['prepared_contains'](self, other))
|
|
48
45
|
|
|
49
46
|
@delegated
|
|
50
47
|
def contains_properly(self, other):
|
|
48
|
+
"""Returns True if the geometry properly contains the other, else False"""
|
|
51
49
|
return bool(self.impl['prepared_contains_properly'](self, other))
|
|
52
50
|
|
|
53
51
|
@delegated
|
|
54
52
|
def covers(self, other):
|
|
53
|
+
"""Returns True if the geometry covers the other, else False"""
|
|
55
54
|
return bool(self.impl['prepared_covers'](self, other))
|
|
56
55
|
|
|
56
|
+
@delegated
|
|
57
|
+
def crosses(self, other):
|
|
58
|
+
"""Returns True if the geometries cross, else False"""
|
|
59
|
+
return bool(self.impl['prepared_crosses'](self, other))
|
|
60
|
+
|
|
61
|
+
@delegated
|
|
62
|
+
def disjoint(self, other):
|
|
63
|
+
"""Returns True if geometries are disjoint, else False"""
|
|
64
|
+
return bool(self.impl['prepared_disjoint'](self, other))
|
|
65
|
+
|
|
66
|
+
@delegated
|
|
67
|
+
def intersects(self, other):
|
|
68
|
+
"""Returns True if geometries intersect, else False"""
|
|
69
|
+
return bool(self.impl['prepared_intersects'](self, other))
|
|
70
|
+
|
|
71
|
+
@delegated
|
|
72
|
+
def overlaps(self, other):
|
|
73
|
+
"""Returns True if geometries overlap, else False"""
|
|
74
|
+
return bool(self.impl['prepared_overlaps'](self, other))
|
|
75
|
+
|
|
76
|
+
@delegated
|
|
77
|
+
def touches(self, other):
|
|
78
|
+
"""Returns True if geometries touch, else False"""
|
|
79
|
+
return bool(self.impl['prepared_touches'](self, other))
|
|
80
|
+
|
|
81
|
+
@delegated
|
|
82
|
+
def within(self, other):
|
|
83
|
+
"""Returns True if geometry is within the other, else False"""
|
|
84
|
+
return bool(self.impl['prepared_within'](self, other))
|
|
57
85
|
|
|
58
86
|
def prep(ob):
|
|
59
87
|
"""Creates and returns a prepared geometric object."""
|