shapely 1.4.0__tar.gz → 1.4.2__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.4.0 → Shapely-1.4.2}/CHANGES.txt +8 -0
- {Shapely-1.4.0/Shapely.egg-info → Shapely-1.4.2}/PKG-INFO +9 -1
- {Shapely-1.4.0 → Shapely-1.4.2/Shapely.egg-info}/PKG-INFO +9 -1
- Shapely-1.4.2/VERSION.txt +1 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/docs/manual.rst +1 -1
- Shapely-1.4.2/shapely/__init__.py +1 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/_geos.pxi +1 -1
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/ctypes_declarations.py +3 -5
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/base.py +15 -3
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/multilinestring.py +6 -1
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geos.py +4 -4
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/impl.py +5 -1
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/speedups/_speedups.c +2954 -2677
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_linestring.py +10 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_multilinestring.py +18 -1
- Shapely-1.4.0/VERSION.txt +0 -1
- Shapely-1.4.0/shapely/__init__.py +0 -1
- {Shapely-1.4.0 → Shapely-1.4.2}/CREDITS.txt +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/LICENSE.txt +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/README.rst +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/Shapely.egg-info/SOURCES.txt +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/Shapely.egg-info/dependency_links.txt +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/Shapely.egg-info/top_level.txt +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/docs/design.rst +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/docs/index.rst +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/docs/project.rst +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/setup.cfg +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/setup.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/affinity.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/algorithms/__init__.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/algorithms/cga.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/coords.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/examples/__init__.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/examples/dissolve.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/examples/geoms.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/examples/intersect.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/ftools.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/__init__.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/collection.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/geo.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/linestring.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/multipoint.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/multipolygon.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/point.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/polygon.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/geometry/proxy.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/iterops.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/linref.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/ops.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/predicates.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/prepared.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/speedups/__init__.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/strtree.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/topology.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/validation.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/vectorized/__init__.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/vectorized/_vectorized.c +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/vectorized/_vectorized.pyx +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/wkb.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/shapely/wkt.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/__init__.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/binascii_hex.txt +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/conftest.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_affinity.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_box.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_cga.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_collection.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_delaunay.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_delegated.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_dlls.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_doctests.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_emptiness.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_equality.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_geointerface.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_geomseq.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_getitem.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_invalid_geometries.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_iterops.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_linear_referencing.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_linemerge.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_locale.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_mapping.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_multipoint.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_multipolygon.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_ndarrays.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_nearest.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_operations.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_operators.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_persist.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_pickle.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_point.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_polygon.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_polygonize.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_predicates.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_prepared.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_products_z.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_singularity.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_strtree.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_styles.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_transform.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_union.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_validation.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_vectorized.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/test_xy.py +0 -0
- {Shapely-1.4.0 → Shapely-1.4.2}/tests/threading_test.py +0 -0
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
Changes
|
|
2
2
|
=======
|
|
3
3
|
|
|
4
|
+
1.4.2 (2014-09-29)
|
|
5
|
+
------------------
|
|
6
|
+
- Fix bungled 1.4.1 release (#176).
|
|
7
|
+
|
|
8
|
+
1.4.1 (2014-09-23)
|
|
9
|
+
------------------
|
|
10
|
+
- Return of support for GEOS 3.2 (#176, #178).
|
|
11
|
+
|
|
4
12
|
1.4.0 (2014-09-08)
|
|
5
13
|
------------------
|
|
6
14
|
- SVG representations for IPython's inline image protocol.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 1.1
|
|
2
2
|
Name: Shapely
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.2
|
|
4
4
|
Summary: Geometric objects, predicates, and operations
|
|
5
5
|
Home-page: https://github.com/Toblerity/Shapely
|
|
6
6
|
Author: Sean Gillies
|
|
@@ -248,6 +248,14 @@ Description: =======
|
|
|
248
248
|
Changes
|
|
249
249
|
=======
|
|
250
250
|
|
|
251
|
+
1.4.2 (2014-09-29)
|
|
252
|
+
------------------
|
|
253
|
+
- Fix bungled 1.4.1 release (#176).
|
|
254
|
+
|
|
255
|
+
1.4.1 (2014-09-23)
|
|
256
|
+
------------------
|
|
257
|
+
- Return of support for GEOS 3.2 (#176, #178).
|
|
258
|
+
|
|
251
259
|
1.4.0 (2014-09-08)
|
|
252
260
|
------------------
|
|
253
261
|
- SVG representations for IPython's inline image protocol.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 1.1
|
|
2
2
|
Name: Shapely
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.2
|
|
4
4
|
Summary: Geometric objects, predicates, and operations
|
|
5
5
|
Home-page: https://github.com/Toblerity/Shapely
|
|
6
6
|
Author: Sean Gillies
|
|
@@ -248,6 +248,14 @@ Description: =======
|
|
|
248
248
|
Changes
|
|
249
249
|
=======
|
|
250
250
|
|
|
251
|
+
1.4.2 (2014-09-29)
|
|
252
|
+
------------------
|
|
253
|
+
- Fix bungled 1.4.1 release (#176).
|
|
254
|
+
|
|
255
|
+
1.4.1 (2014-09-23)
|
|
256
|
+
------------------
|
|
257
|
+
- Return of support for GEOS 3.2 (#176, #178).
|
|
258
|
+
|
|
251
259
|
1.4.0 (2014-09-08)
|
|
252
260
|
------------------
|
|
253
261
|
- SVG representations for IPython's inline image protocol.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.4.2
|
|
@@ -717,7 +717,7 @@ instances, thereby making copies.
|
|
|
717
717
|
|
|
718
718
|
.. plot:: code/multipolygon.py
|
|
719
719
|
|
|
720
|
-
Figure 7. On the
|
|
720
|
+
Figure 7. On the left, a `valid` `MultiPolygon` with 2 members, and on the
|
|
721
721
|
right, a `MultiPolygon` that is invalid because its members touch at an
|
|
722
722
|
infinite number of points (along a line).
|
|
723
723
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.4.2"
|
|
@@ -26,7 +26,6 @@ cdef extern from "geos_c.h":
|
|
|
26
26
|
GEOSGeometry *GEOSGeom_createLinearRing_r(GEOSContextHandle_t, GEOSCoordSequence *) nogil
|
|
27
27
|
GEOSGeometry *GEOSGeom_clone_r(GEOSContextHandle_t, GEOSGeometry *) nogil
|
|
28
28
|
GEOSCoordSequence *GEOSCoordSeq_clone_r(GEOSContextHandle_t, GEOSCoordSequence *) nogil
|
|
29
|
-
int GEOSGeom_getCoordinateDimension_r(GEOSContextHandle_t, GEOSGeometry *) nogil
|
|
30
29
|
|
|
31
30
|
void GEOSGeom_destroy_r(GEOSContextHandle_t, GEOSGeometry *) nogil
|
|
32
31
|
|
|
@@ -41,6 +40,7 @@ cdef extern from "geos_c.h":
|
|
|
41
40
|
char GEOSPreparedTouches_r(GEOSContextHandle_t, const GEOSPreparedGeometry*, const GEOSGeometry*) nogil
|
|
42
41
|
char GEOSPreparedWithin_r(GEOSContextHandle_t, const GEOSPreparedGeometry*, const GEOSGeometry*) nogil
|
|
43
42
|
|
|
43
|
+
char GEOSHasZ_r(GEOSContextHandle_t, GEOSGeometry *) nogil
|
|
44
44
|
char GEOSisRing_r(GEOSContextHandle_t, GEOSGeometry *) nogil
|
|
45
45
|
char GEOSisClosed_r(GEOSContextHandle_t, GEOSGeometry *) nogil
|
|
46
46
|
|
|
@@ -276,8 +276,9 @@ def prototype(lgeos, geos_version):
|
|
|
276
276
|
lgeos.GEOSisRing.restype = c_byte
|
|
277
277
|
lgeos.GEOSisRing.argtypes = [c_void_p]
|
|
278
278
|
|
|
279
|
-
|
|
280
|
-
|
|
279
|
+
if geos_version >= (3, 3, 0):
|
|
280
|
+
lgeos.GEOSisClosed.restype = c_byte
|
|
281
|
+
lgeos.GEOSisClosed.argtypes = [c_void_p]
|
|
281
282
|
|
|
282
283
|
lgeos.GEOSHasZ.restype = c_byte
|
|
283
284
|
lgeos.GEOSHasZ.argtypes = [c_void_p]
|
|
@@ -357,9 +358,6 @@ def prototype(lgeos, geos_version):
|
|
|
357
358
|
lgeos.GEOSGeom_getDimensions.restype = c_int
|
|
358
359
|
lgeos.GEOSGeom_getDimensions.argtypes = [c_void_p]
|
|
359
360
|
|
|
360
|
-
lgeos.GEOSGeom_getCoordinateDimension.restype = c_int
|
|
361
|
-
lgeos.GEOSGeom_getCoordinateDimension.argtypes = [c_void_p]
|
|
362
|
-
|
|
363
361
|
'''
|
|
364
362
|
Misc functions
|
|
365
363
|
'''
|
|
@@ -129,7 +129,9 @@ def geos_geom_from_py(ob, create_func=None):
|
|
|
129
129
|
cs = lgeos.GEOSGeom_getCoordSeq(ob._geom)
|
|
130
130
|
cs = lgeos.GEOSCoordSeq_clone(cs)
|
|
131
131
|
geom = create_func(cs)
|
|
132
|
-
|
|
132
|
+
|
|
133
|
+
N = ob._ndim
|
|
134
|
+
|
|
133
135
|
return geom, N
|
|
134
136
|
|
|
135
137
|
def exceptNull(func):
|
|
@@ -558,8 +560,18 @@ class BaseGeometry(object):
|
|
|
558
560
|
|
|
559
561
|
@property
|
|
560
562
|
def is_closed(self):
|
|
561
|
-
"""True if the geometry is closed, else False
|
|
562
|
-
|
|
563
|
+
"""True if the geometry is closed, else False
|
|
564
|
+
|
|
565
|
+
Applicable only to 1-D geometries."""
|
|
566
|
+
if self.geom_type == 'LinearRing':
|
|
567
|
+
return True
|
|
568
|
+
elif self.geom_type == 'LineString':
|
|
569
|
+
if 'is_closed' in self.impl:
|
|
570
|
+
return bool(self.impl['is_closed'](self))
|
|
571
|
+
else:
|
|
572
|
+
return self.coords[0] == self.coords[-1]
|
|
573
|
+
else:
|
|
574
|
+
return False
|
|
563
575
|
|
|
564
576
|
@property
|
|
565
577
|
def is_simple(self):
|
|
@@ -130,7 +130,12 @@ def geos_multilinestring_from_py(ob):
|
|
|
130
130
|
for l in range(L):
|
|
131
131
|
geom, ndims = linestring.geos_linestring_from_py(array['data'][l])
|
|
132
132
|
subs[i] = cast(geom, c_void_p)
|
|
133
|
-
|
|
133
|
+
|
|
134
|
+
if lgeos.GEOSHasZ(subs[0]):
|
|
135
|
+
N = 3
|
|
136
|
+
else:
|
|
137
|
+
N = 2
|
|
138
|
+
|
|
134
139
|
except (NotImplementedError, AttributeError):
|
|
135
140
|
obs = getattr(ob, 'geoms', ob)
|
|
136
141
|
L = len(obs)
|
|
@@ -545,7 +545,6 @@ class LGEOS300(LGEOSBase):
|
|
|
545
545
|
self.GEOSisValid,
|
|
546
546
|
self.GEOSisSimple,
|
|
547
547
|
self.GEOSisRing,
|
|
548
|
-
self.GEOSisClosed,
|
|
549
548
|
self.GEOSHasZ):
|
|
550
549
|
pred.errcheck = errcheck_predicate
|
|
551
550
|
|
|
@@ -561,7 +560,6 @@ class LGEOS300(LGEOSBase):
|
|
|
561
560
|
self.methods['has_z'] = self.GEOSHasZ
|
|
562
561
|
self.methods['is_empty'] = self.GEOSisEmpty
|
|
563
562
|
self.methods['is_ring'] = self.GEOSisRing
|
|
564
|
-
self.methods['is_closed'] = self.GEOSisClosed
|
|
565
563
|
self.methods['is_simple'] = self.GEOSisSimple
|
|
566
564
|
self.methods['is_valid'] = self.GEOSisValid
|
|
567
565
|
self.methods['disjoint'] = self.GEOSDisjoint
|
|
@@ -622,7 +620,6 @@ class LGEOS310(LGEOSBase):
|
|
|
622
620
|
self.GEOSisValid,
|
|
623
621
|
self.GEOSisSimple,
|
|
624
622
|
self.GEOSisRing,
|
|
625
|
-
self.GEOSisClosed,
|
|
626
623
|
self.GEOSHasZ):
|
|
627
624
|
pred.func.errcheck = errcheck_predicate
|
|
628
625
|
|
|
@@ -640,7 +637,6 @@ class LGEOS310(LGEOSBase):
|
|
|
640
637
|
self.methods['has_z'] = self.GEOSHasZ
|
|
641
638
|
self.methods['is_empty'] = self.GEOSisEmpty
|
|
642
639
|
self.methods['is_ring'] = self.GEOSisRing
|
|
643
|
-
self.methods['is_closed'] = self.GEOSisClosed
|
|
644
640
|
self.methods['is_simple'] = self.GEOSisSimple
|
|
645
641
|
self.methods['is_valid'] = self.GEOSisValid
|
|
646
642
|
self.methods['disjoint'] = self.GEOSDisjoint
|
|
@@ -713,7 +709,11 @@ class LGEOS330(LGEOS320):
|
|
|
713
709
|
attr.__name__ = func.__name__
|
|
714
710
|
setattr(self, key, attr)
|
|
715
711
|
|
|
712
|
+
for pred in (self.GEOSisClosed,):
|
|
713
|
+
pred.func.errcheck = errcheck_predicate
|
|
714
|
+
|
|
716
715
|
self.methods['unary_union'] = self.GEOSUnaryUnion
|
|
716
|
+
self.methods['is_closed'] = self.GEOSisClosed
|
|
717
717
|
self.methods['cascaded_union'] = self.methods['unary_union']
|
|
718
718
|
|
|
719
719
|
|
|
@@ -71,7 +71,6 @@ IMPL300 = {
|
|
|
71
71
|
'has_z': (UnaryPredicate, 'has_z'),
|
|
72
72
|
'is_empty': (UnaryPredicate, 'is_empty'),
|
|
73
73
|
'is_ring': (UnaryPredicate, 'is_ring'),
|
|
74
|
-
'is_closed': (UnaryPredicate, 'is_closed'),
|
|
75
74
|
'is_simple': (UnaryPredicate, 'is_simple'),
|
|
76
75
|
'is_valid': (UnaryPredicate, 'is_valid'),
|
|
77
76
|
#
|
|
@@ -113,6 +112,9 @@ IMPL320 = {
|
|
|
113
112
|
'buffer_with_style': (UnaryTopologicalOp, 'buffer_with_style'),
|
|
114
113
|
}
|
|
115
114
|
|
|
115
|
+
IMPL330 = {
|
|
116
|
+
'is_closed': (UnaryPredicate, 'is_closed')}
|
|
117
|
+
|
|
116
118
|
def impl_items(defs):
|
|
117
119
|
return [(k, v[0](v[1])) for k, v in list(defs.items())]
|
|
118
120
|
|
|
@@ -123,5 +125,7 @@ if lgeos.geos_version >= (3, 1, 1):
|
|
|
123
125
|
imp.update(impl_items(IMPL311))
|
|
124
126
|
if lgeos.geos_version >= (3, 2, 0):
|
|
125
127
|
imp.update(impl_items(IMPL320))
|
|
128
|
+
if lgeos.geos_version >= (3, 3, 0):
|
|
129
|
+
imp.update(impl_items(IMPL330))
|
|
126
130
|
|
|
127
131
|
DefaultImplementation = imp
|