[python-shapely] 02/06: Imported Upstream version 1.6~b2

Bas Couwenberg sebastic at debian.org
Mon Dec 12 17:54:38 UTC 2016


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository python-shapely.

commit 18684936d7507641e4b35798644ea7c8cdd302ec
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Mon Dec 12 18:34:47 2016 +0100

    Imported Upstream version 1.6~b2
---
 CHANGES.txt              |  7 +++++++
 README.rst               | 16 +++++++++-------
 shapely/__init__.py      |  2 +-
 shapely/geometry/geo.py  |  7 +++++++
 tests/test_collection.py | 39 +++++++++++++++++++++++++++++++++++++++
 5 files changed, 63 insertions(+), 8 deletions(-)

diff --git a/CHANGES.txt b/CHANGES.txt
index ffe9922..a39734d 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,6 +1,13 @@
 Changes
 =======
 
+1.6b2 (2016-12-12)
+------------------
+
+New features:
+
+- Add support for GeometryCollection to shape and asShape functions (#422).
+
 1.6b1 (2016-12-12)
 ------------------
 
diff --git a/README.rst b/README.rst
index 28d8bfd..45d10ad 100644
--- a/README.rst
+++ b/README.rst
@@ -5,6 +5,7 @@ Shapely
 .. image:: https://travis-ci.org/Toblerity/Shapely.png?branch=master
    :target: https://travis-ci.org/Toblerity/Shapely
 
+.. image:: https://coveralls.io/repos/github/Toblerity/Shapely/badge.svg?branch=master
    :target: https://coveralls.io/github/Toblerity/Shapely?branch=master
 
 Manipulation and analysis of geometric objects in the Cartesian plane.
@@ -32,7 +33,7 @@ Shapely 1.6.x requires
 * Python >=2.6 (including Python 3.x)
 * GEOS >=3.3 
 
-Installing Shapely (1.6b1)
+Installing Shapely (1.6b2)
 ==========================
 
 Windows users have two good installation options: the wheels at
@@ -45,13 +46,13 @@ Python Package Index with a recent version of pip (8+):
 
 .. code-block:: console
 
-    $ pip install shapely==1.6b1
+    $ pip install shapely==1.6b2
 
 A few extra speedups that require Numpy can be had by running
 
 .. code-block:: console
 
-    $ pip install shapely[vectorized]==1.6b1
+    $ pip install shapely[vectorized]==1.6b2
 
 If you want to build Shapely from source for compatibility with
 other modules that depend on GEOS (such as cartopy or osgeo.ogr)
@@ -62,8 +63,8 @@ you may ignore the binary wheels.
     $ pip install shapely --no-binary shapely
 
 Binary wheels are also available for Linux. To get them, use `pip shapely
-shapely==1.6b1`. To avoid them, use `pip install shapely --no-binary
-shapely==1.6b1`.
+shapely==1.6b2`. To avoid them, use `pip install shapely --no-binary
+shapely==1.6b2`.
 
 In other situations, install `geos_c` libs and headers by any means 
 (for example, `brew install geos` on OS X or
@@ -82,8 +83,9 @@ variable, e.g.:
 .. code-block:: console
 
     $ GEOS_CONFIG=/path/to/geos-config pip install shapely
-Shapely is also provided by popular Python distributions like Canopy (Enthought)
-and Anaconda (Continuum Analytics).
+
+Shapely is also provided by popular Python distributions like Canopy
+(Enthought) and Anaconda (Continuum Analytics).
 
 Usage
 =====
diff --git a/shapely/__init__.py b/shapely/__init__.py
index 8f4c864..fb79012 100644
--- a/shapely/__init__.py
+++ b/shapely/__init__.py
@@ -1 +1 @@
-__version__ = "1.6b1"
+__version__ = "1.6b2"
diff --git a/shapely/geometry/geo.py b/shapely/geometry/geo.py
index 55d2d90..96f301c 100644
--- a/shapely/geometry/geo.py
+++ b/shapely/geometry/geo.py
@@ -8,6 +8,7 @@ from .polygon import Polygon, asPolygon
 from .multipoint import MultiPoint, asMultiPoint
 from .multilinestring import MultiLineString, asMultiLineString
 from .multipolygon import MultiPolygon, MultiPolygonAdapter
+from .collection import GeometryCollection
 
 
 def box(minx, miny, maxx, maxy, ccw=True):
@@ -38,6 +39,9 @@ def shape(context):
         return MultiLineString(ob["coordinates"])
     elif geom_type == "multipolygon":
         return MultiPolygon(ob["coordinates"], context_type='geojson')
+    elif geom_type == "geometrycollection":
+        geoms = [shape(g) for g in ob.get("geometries", [])]
+        return GeometryCollection(geoms)
     else:
         raise ValueError("Unknown geometry type: %s" % geom_type)
 
@@ -67,6 +71,9 @@ def asShape(context):
         return asMultiLineString(ob["coordinates"])
     elif geom_type == "multipolygon":
         return MultiPolygonAdapter(ob["coordinates"], context_type='geojson')
+    elif geom_type == "geometrycollection":
+        geoms = [asShape(g) for g in ob.get("geometries", [])]
+        return GeometryCollection(geoms)
     else:
         raise ValueError("Unknown geometry type: %s" % geom_type)
 
diff --git a/tests/test_collection.py b/tests/test_collection.py
index a892c52..1e6f0a6 100644
--- a/tests/test_collection.py
+++ b/tests/test_collection.py
@@ -1,6 +1,8 @@
 from . import unittest
 from shapely.geometry import LineString
 from shapely.geometry.collection import GeometryCollection
+from shapely.geometry import shape
+from shapely.geometry import asShape
 
 
 class CollectionTestCase(unittest.TestCase):
@@ -24,6 +26,43 @@ class CollectionTestCase(unittest.TestCase):
         # access geometry, this should not seg fault as 1.2.15 did
         self.assertIsNotNone(child.wkt)
 
+    def test_geointerface(self):
+        d = {"type": "GeometryCollection","geometries": [
+                {"type": "Point", "coordinates": (0, 3)},
+                {"type": "LineString", "coordinates": ((2, 0), (1, 0))}
+            ]}
+
+        # asShape
+        m = asShape(d)
+        self.assertEqual(m.geom_type, "GeometryCollection")
+        self.assertEqual(len(m), 2)
+        geom_types = [g.geom_type for g in m.geoms]
+        self.assertIn("Point", geom_types)
+        self.assertIn("LineString", geom_types)
+
+        # shape
+        m = shape(d)
+        self.assertEqual(m.geom_type, "GeometryCollection")
+        self.assertEqual(len(m), 2)
+        geom_types = [g.geom_type for g in m.geoms]
+        self.assertIn("Point", geom_types)
+        self.assertIn("LineString", geom_types)
+
+    def test_empty_geointerface(self):
+        d = {"type": "GeometryCollection", "geometries": []}
+
+        # asShape
+        m = asShape(d)
+        self.assertEqual(m.geom_type, "GeometryCollection")
+        self.assertEqual(len(m), 0)
+        self.assertEqual(m.geoms, [])
+
+        # shape
+        m = shape(d)
+        self.assertEqual(m.geom_type, "GeometryCollection")
+        self.assertEqual(len(m), 0)
+        self.assertEqual(m.geoms, [])
+
 
 def test_suite():
     return unittest.TestLoader().loadTestsFromTestCase(CollectionTestCase)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/python-shapely.git



More information about the Pkg-grass-devel mailing list