[python-descartes] 01/02: Imported Upstream version 1.0.1

Johan Van de Wauw johanvdw-guest at moszumanska.debian.org
Thu Dec 18 10:33:40 UTC 2014


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

johanvdw-guest pushed a commit to branch master
in repository python-descartes.

commit 1ddbda5916f7dcacaaafcd5a259be693951788be
Author: Johan Van de Wauw <johan.vandewauw at gmail.com>
Date:   Thu Dec 18 07:19:52 2014 +0100

    Imported Upstream version 1.0.1
---
 PKG-INFO                                | 85 +++++++++++++++++++++++++++++++++
 README.txt                              | 65 +++++++++++++++++++++++++
 descartes.egg-info/PKG-INFO             | 85 +++++++++++++++++++++++++++++++++
 descartes.egg-info/SOURCES.txt          | 11 +++++
 descartes.egg-info/dependency_links.txt |  1 +
 descartes.egg-info/not-zip-safe         |  1 +
 descartes.egg-info/top_level.txt        |  1 +
 descartes/__init__.py                   |  4 ++
 descartes/patch.py                      | 66 +++++++++++++++++++++++++
 descartes/tests.py                      | 38 +++++++++++++++
 setup.cfg                               |  5 ++
 setup.py                                | 33 +++++++++++++
 12 files changed, 395 insertions(+)

diff --git a/PKG-INFO b/PKG-INFO
new file mode 100644
index 0000000..c1ca2fd
--- /dev/null
+++ b/PKG-INFO
@@ -0,0 +1,85 @@
+Metadata-Version: 1.1
+Name: descartes
+Version: 1.0.1
+Summary: Use geometric objects as matplotlib paths and patches
+Home-page: http://bitbucket.org/sgillies/descartes/
+Author: Sean Gillies
+Author-email: sean.gillies at gmail.com
+License: BSD
+Description: Descartes
+        =========
+        
+        Use Shapely_ or GeoJSON-like geometric objects as matplotlib paths and patches
+        
+        .. image:: http://farm4.static.flickr.com/3662/4555372019_9bbed1f956_o_d.png
+           :width: 800
+           :height: 320
+        
+        Requires: matplotlib, numpy, and optionally Shapely 1.2+.
+        
+        Example::
+        
+          from matplotlib import pyplot
+          from shapely.geometry import LineString
+          from descartes import PolygonPatch
+          
+          BLUE = '#6699cc'
+          GRAY = '#999999'
+          
+          def plot_line(ax, ob):
+              x, y = ob.xy
+              ax.plot(x, y, color=GRAY, linewidth=3, solid_capstyle='round', zorder=1)
+          
+          line = LineString([(0, 0), (1, 1), (0, 2), (2, 2), (3, 1), (1, 0)])
+          
+          fig = pyplot.figure(1, figsize=(10, 4), dpi=180)
+          
+          # 1
+          ax = fig.add_subplot(121)
+          
+          plot_line(ax, line)
+          
+          dilated = line.buffer(0.5)
+          patch1 = PolygonPatch(dilated, fc=BLUE, ec=BLUE, alpha=0.5, zorder=2)
+          ax.add_patch(patch1)
+          
+          #2
+          ax = fig.add_subplot(122)
+          
+          patch2a = PolygonPatch(dilated, fc=GRAY, ec=GRAY, alpha=0.5, zorder=1)
+          ax.add_patch(patch2a)
+          
+          eroded = dilated.buffer(-0.3)
+          
+          # GeoJSON-like data works as well
+          
+          polygon = eroded.__geo_interface__
+          # >>> geo['type']
+          # 'Polygon'
+          # >>> geo['coordinates'][0][:2]
+          # ((0.50502525316941682, 0.78786796564403572), (0.5247963548222736, 0.8096820147509064))
+          patch2b = PolygonPatch(polygon, fc=BLUE, ec=BLUE, alpha=0.5, zorder=2)
+          ax.add_patch(patch2b)
+          
+          pyplot.show()
+        
+        
+        See also: examples/patches.py.
+        
+        Descartes is not associated with the identically named and apparently defunct
+        project at http://descartes.sourceforge.net/.
+        
+        .. _Shapely: http://gispython.org/lab/wiki/Shapely
+        
+        
+Keywords: matplotlib gis geojson geometry
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Intended Audience :: Developers
+Classifier: Intended Audience :: Science/Research
+Classifier: License :: OSI Approved :: BSD License
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 3
+Classifier: Topic :: Scientific/Engineering :: GIS
diff --git a/README.txt b/README.txt
new file mode 100644
index 0000000..5b9c10a
--- /dev/null
+++ b/README.txt
@@ -0,0 +1,65 @@
+Descartes
+=========
+
+Use Shapely_ or GeoJSON-like geometric objects as matplotlib paths and patches
+
+.. image:: http://farm4.static.flickr.com/3662/4555372019_9bbed1f956_o_d.png
+   :width: 800
+   :height: 320
+
+Requires: matplotlib, numpy, and optionally Shapely 1.2+.
+
+Example::
+
+  from matplotlib import pyplot
+  from shapely.geometry import LineString
+  from descartes import PolygonPatch
+  
+  BLUE = '#6699cc'
+  GRAY = '#999999'
+  
+  def plot_line(ax, ob):
+      x, y = ob.xy
+      ax.plot(x, y, color=GRAY, linewidth=3, solid_capstyle='round', zorder=1)
+  
+  line = LineString([(0, 0), (1, 1), (0, 2), (2, 2), (3, 1), (1, 0)])
+  
+  fig = pyplot.figure(1, figsize=(10, 4), dpi=180)
+  
+  # 1
+  ax = fig.add_subplot(121)
+  
+  plot_line(ax, line)
+  
+  dilated = line.buffer(0.5)
+  patch1 = PolygonPatch(dilated, fc=BLUE, ec=BLUE, alpha=0.5, zorder=2)
+  ax.add_patch(patch1)
+  
+  #2
+  ax = fig.add_subplot(122)
+  
+  patch2a = PolygonPatch(dilated, fc=GRAY, ec=GRAY, alpha=0.5, zorder=1)
+  ax.add_patch(patch2a)
+  
+  eroded = dilated.buffer(-0.3)
+  
+  # GeoJSON-like data works as well
+  
+  polygon = eroded.__geo_interface__
+  # >>> geo['type']
+  # 'Polygon'
+  # >>> geo['coordinates'][0][:2]
+  # ((0.50502525316941682, 0.78786796564403572), (0.5247963548222736, 0.8096820147509064))
+  patch2b = PolygonPatch(polygon, fc=BLUE, ec=BLUE, alpha=0.5, zorder=2)
+  ax.add_patch(patch2b)
+  
+  pyplot.show()
+
+
+See also: examples/patches.py.
+
+Descartes is not associated with the identically named and apparently defunct
+project at http://descartes.sourceforge.net/.
+
+.. _Shapely: http://gispython.org/lab/wiki/Shapely
+
diff --git a/descartes.egg-info/PKG-INFO b/descartes.egg-info/PKG-INFO
new file mode 100644
index 0000000..c1ca2fd
--- /dev/null
+++ b/descartes.egg-info/PKG-INFO
@@ -0,0 +1,85 @@
+Metadata-Version: 1.1
+Name: descartes
+Version: 1.0.1
+Summary: Use geometric objects as matplotlib paths and patches
+Home-page: http://bitbucket.org/sgillies/descartes/
+Author: Sean Gillies
+Author-email: sean.gillies at gmail.com
+License: BSD
+Description: Descartes
+        =========
+        
+        Use Shapely_ or GeoJSON-like geometric objects as matplotlib paths and patches
+        
+        .. image:: http://farm4.static.flickr.com/3662/4555372019_9bbed1f956_o_d.png
+           :width: 800
+           :height: 320
+        
+        Requires: matplotlib, numpy, and optionally Shapely 1.2+.
+        
+        Example::
+        
+          from matplotlib import pyplot
+          from shapely.geometry import LineString
+          from descartes import PolygonPatch
+          
+          BLUE = '#6699cc'
+          GRAY = '#999999'
+          
+          def plot_line(ax, ob):
+              x, y = ob.xy
+              ax.plot(x, y, color=GRAY, linewidth=3, solid_capstyle='round', zorder=1)
+          
+          line = LineString([(0, 0), (1, 1), (0, 2), (2, 2), (3, 1), (1, 0)])
+          
+          fig = pyplot.figure(1, figsize=(10, 4), dpi=180)
+          
+          # 1
+          ax = fig.add_subplot(121)
+          
+          plot_line(ax, line)
+          
+          dilated = line.buffer(0.5)
+          patch1 = PolygonPatch(dilated, fc=BLUE, ec=BLUE, alpha=0.5, zorder=2)
+          ax.add_patch(patch1)
+          
+          #2
+          ax = fig.add_subplot(122)
+          
+          patch2a = PolygonPatch(dilated, fc=GRAY, ec=GRAY, alpha=0.5, zorder=1)
+          ax.add_patch(patch2a)
+          
+          eroded = dilated.buffer(-0.3)
+          
+          # GeoJSON-like data works as well
+          
+          polygon = eroded.__geo_interface__
+          # >>> geo['type']
+          # 'Polygon'
+          # >>> geo['coordinates'][0][:2]
+          # ((0.50502525316941682, 0.78786796564403572), (0.5247963548222736, 0.8096820147509064))
+          patch2b = PolygonPatch(polygon, fc=BLUE, ec=BLUE, alpha=0.5, zorder=2)
+          ax.add_patch(patch2b)
+          
+          pyplot.show()
+        
+        
+        See also: examples/patches.py.
+        
+        Descartes is not associated with the identically named and apparently defunct
+        project at http://descartes.sourceforge.net/.
+        
+        .. _Shapely: http://gispython.org/lab/wiki/Shapely
+        
+        
+Keywords: matplotlib gis geojson geometry
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Intended Audience :: Developers
+Classifier: Intended Audience :: Science/Research
+Classifier: License :: OSI Approved :: BSD License
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 3
+Classifier: Topic :: Scientific/Engineering :: GIS
diff --git a/descartes.egg-info/SOURCES.txt b/descartes.egg-info/SOURCES.txt
new file mode 100644
index 0000000..9ac7444
--- /dev/null
+++ b/descartes.egg-info/SOURCES.txt
@@ -0,0 +1,11 @@
+README.txt
+setup.cfg
+setup.py
+descartes/__init__.py
+descartes/patch.py
+descartes/tests.py
+descartes.egg-info/PKG-INFO
+descartes.egg-info/SOURCES.txt
+descartes.egg-info/dependency_links.txt
+descartes.egg-info/not-zip-safe
+descartes.egg-info/top_level.txt
\ No newline at end of file
diff --git a/descartes.egg-info/dependency_links.txt b/descartes.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/descartes.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/descartes.egg-info/not-zip-safe b/descartes.egg-info/not-zip-safe
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/descartes.egg-info/not-zip-safe
@@ -0,0 +1 @@
+
diff --git a/descartes.egg-info/top_level.txt b/descartes.egg-info/top_level.txt
new file mode 100644
index 0000000..77933de
--- /dev/null
+++ b/descartes.egg-info/top_level.txt
@@ -0,0 +1 @@
+descartes
diff --git a/descartes/__init__.py b/descartes/__init__.py
new file mode 100644
index 0000000..8fd72b2
--- /dev/null
+++ b/descartes/__init__.py
@@ -0,0 +1,4 @@
+"""Turn geometric objects into matplotlib patches"""
+
+from descartes.patch import PolygonPatch
+
diff --git a/descartes/patch.py b/descartes/patch.py
new file mode 100644
index 0000000..34686f7
--- /dev/null
+++ b/descartes/patch.py
@@ -0,0 +1,66 @@
+"""Paths and patches"""
+
+from matplotlib.patches import PathPatch
+from matplotlib.path import Path
+from numpy import asarray, concatenate, ones
+
+
+class Polygon(object):
+    # Adapt Shapely or GeoJSON/geo_interface polygons to a common interface
+    def __init__(self, context):
+        if hasattr(context, 'interiors'):
+            self.context = context
+        else:
+            self.context = getattr(context, '__geo_interface__', context)
+    @property
+    def geom_type(self):
+        return (getattr(self.context, 'geom_type', None)
+                or self.context['type'])
+    @property
+    def exterior(self):
+        return (getattr(self.context, 'exterior', None) 
+                or self.context['coordinates'][0])
+    @property
+    def interiors(self):
+        value = getattr(self.context, 'interiors', None)
+        if value is None:
+            value = self.context['coordinates'][1:]
+        return value
+
+
+def PolygonPath(polygon):
+    """Constructs a compound matplotlib path from a Shapely or GeoJSON-like
+    geometric object"""
+    this = Polygon(polygon)
+    assert this.geom_type == 'Polygon'
+    def coding(ob):
+        # The codes will be all "LINETO" commands, except for "MOVETO"s at the
+        # beginning of each subpath
+        n = len(getattr(ob, 'coords', None) or ob)
+        vals = ones(n, dtype=Path.code_type) * Path.LINETO
+        vals[0] = Path.MOVETO
+        return vals
+    vertices = concatenate(
+                    [asarray(this.exterior)] 
+                    + [asarray(r) for r in this.interiors])
+    codes = concatenate(
+                [coding(this.exterior)] 
+                + [coding(r) for r in this.interiors])
+    return Path(vertices, codes)
+
+
+def PolygonPatch(polygon, **kwargs):
+    """Constructs a matplotlib patch from a geometric object
+    
+    The `polygon` may be a Shapely or GeoJSON-like object with or without holes.
+    The `kwargs` are those supported by the matplotlib.patches.Polygon class
+    constructor. Returns an instance of matplotlib.patches.PathPatch.
+
+    Example (using Shapely Point and a matplotlib axes):
+
+      >>> b = Point(0, 0).buffer(1.0)
+      >>> patch = PolygonPatch(b, fc='blue', ec='blue', alpha=0.5)
+      >>> axis.add_patch(patch)
+
+    """
+    return PathPatch(PolygonPath(polygon), **kwargs)
diff --git a/descartes/tests.py b/descartes/tests.py
new file mode 100644
index 0000000..8cb48b4
--- /dev/null
+++ b/descartes/tests.py
@@ -0,0 +1,38 @@
+from shapely.geometry import *
+import unittest
+
+from descartes.patch import PolygonPatch
+
+class PolygonTestCase(unittest.TestCase):
+    polygon = Point(0, 0).buffer(10.0).difference(
+                MultiPoint([(-5, 0), (5, 0)]).buffer(3.0))
+    def test_patch(self):
+        patch = PolygonPatch(self.polygon)
+        self.failUnlessEqual(str(type(patch)), 
+            "<class 'matplotlib.patches.PathPatch'>")
+        path = patch.get_path()
+        self.failUnless(len(path.vertices) == len(path.codes) == 198)
+
+class JSONPolygonTestCase(unittest.TestCase):
+    polygon = Point(0, 0).buffer(10.0).difference(
+                MultiPoint([(-5, 0), (5, 0)]).buffer(3.0))
+    def test_patch(self):
+        geo = self.polygon.__geo_interface__
+        patch = PolygonPatch(geo)
+        self.failUnlessEqual(str(type(patch)), 
+            "<class 'matplotlib.patches.PathPatch'>")
+        path = patch.get_path()
+        self.failUnless(len(path.vertices) == len(path.codes) == 198)
+
+class GeoInterfacePolygonTestCase(unittest.TestCase):
+    class GeoThing:
+        __geo_interface__ = None
+    thing = GeoThing()
+    thing.__geo_interface__ = Point(0, 0).buffer(10.0).difference(
+                MultiPoint([(-5, 0), (5, 0)]).buffer(3.0)).__geo_interface__
+    def test_patch(self):
+        patch = PolygonPatch(self.thing)
+        self.failUnlessEqual(str(type(patch)), 
+            "<class 'matplotlib.patches.PathPatch'>")
+        path = patch.get_path()
+        self.failUnless(len(path.vertices) == len(path.codes) == 198)
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..861a9f5
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,5 @@
+[egg_info]
+tag_build = 
+tag_date = 0
+tag_svn_revision = 0
+
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..4d05b5a
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,33 @@
+import os
+import sys
+import warnings
+
+from setuptools import setup, find_packages
+
+version = '1.0.1'
+description = open('README.txt', 'r').read()
+
+setup(name='descartes',
+      version=version,
+      description="Use geometric objects as matplotlib paths and patches",
+      long_description=description,
+      classifiers=[
+        'Development Status :: 5 - Production/Stable',
+        'Intended Audience :: Developers',
+        'Intended Audience :: Science/Research',
+        'License :: OSI Approved :: BSD License',
+        'Operating System :: OS Independent',
+        'Programming Language :: Python',
+        'Programming Language :: Python :: 2',
+        'Programming Language :: Python :: 3',
+        'Topic :: Scientific/Engineering :: GIS'
+      ],
+      keywords='matplotlib gis geojson geometry',
+      author='Sean Gillies',
+      author_email='sean.gillies at gmail.com',
+      url='http://bitbucket.org/sgillies/descartes/',
+      license='BSD',
+      packages=find_packages(exclude=['ez_setup', 'examples', 'tests']),
+      include_package_data=True,
+      zip_safe=False,
+      )

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



More information about the Pkg-grass-devel mailing list