pygeoif 0.3.0dev
A basic implementation of the __geo_interface__
Latest Version: 0.4.1
Introduction
PyGeoIf provides a GeoJSONlike protocol for geospatial (GIS) vector data.
see https://gist.github.com/2217756
Other Python programs and packages that you may have heard of already implement this protocol:
 ArcPy http://help.arcgis.com/en/arcgisdesktop/
 descartes https://bitbucket.org/sgillies/descartes/
 geojson http://pypi.python.org/pypi/geojson/
 PySAL http://pysal.geodacenter.org/
 Shapely https://github.com/Toblerity/Shapely
So when you want to write your own geospatilal library with support for this protocol you may use pygeoif as a starting point and build your functionality on top of it
You may think of pygeoif as a 'shapely ultralight' which lets you construct geometries and perform very basic operations like reading and writing geometries from/to WKT, constructing line strings out of points, polygons from linear rings, multi polygons from polygons, etc. It was inspired by shapely and implements the geometries in a way that when you are familiar with shapely you feel right at home with pygeoif
It was written to provide clean and python only geometries for fastkml
Example
>>> from pygeoif import geometry >>> p = geometry.Point(1,1) >>> p.__geo_interface__ {'type': 'Point', 'coordinates': (1.0, 1.0)} >>> print p POINT (1.0 1.0) >>> p1 = geometry.Point(0,0) >>> l = geometry.LineString([p,p1]) >>> l.bounds (0.0, 0.0, 1.0, 1.0) >>> dir(l) ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__geo_interface__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_coordinates', '_geoms', '_type', 'bounds', 'coords', 'geom_type', 'geoms', 'to_wkt'] >>> print l LINESTRING (1.0 1.0, 0.0 0.0)
You find more examples in the tests.py file which cover every aspect of pygeoif or in fastkml.
Classes
All classes implement the attributes:
 __geo_interface__: as dicussed above
 geom_type: Returns a string specifying the Geometry Type of the object
 bounds: Returns a (minx, miny, maxx, maxy) tuple (float values) that bounds the object.
 wkt: Returns the 'Well Known Text' representation of the object
and the method:
 to_wkt which also prints the object
Point
A zero dimensional feature
Attributes
 x, y, z : float
 Coordinate values
Example
>>> p = Point(1.0, 1.0) >>> print p POINT (1.0000000000000000 1.0000000000000000) >>> p.y 1.0 >>> p.x 1.0
LineString
A onedimensional figure comprising one or more line segments
A LineString has nonzero length and zero area. It may approximate a curve and need not be straight. Unlike a LinearRing, a LineString is not closed.
Attributes
 geoms : sequence
 A sequence of Points
LinearRing
A closed onedimensional feature comprising one or more line segments
A LinearRing that crosses itself or touches itself at a single point is invalid and operations on it may fail.
A Linear Ring is self closing
Polygon
A twodimensional figure bounded by a linear ring
A polygon has a nonzero area. It may have one or more negativespace "holes" which are also bounded by linear rings. If any rings cross each other, the feature is invalid and operations on it may fail.
Attributes
 exterior : LinearRing
 The ring which bounds the positive space of the polygon.
 interiors : sequence
 A sequence of rings which bound all existing holes.
MultiPoint
A collection of one or more points
Attributes
 geoms : sequence
 A sequence of Points
MultiLineString
A collection of one or more line strings
A MultiLineString has nonzero length and zero area.
Attributes
 geoms : sequence
 A sequence of LineStrings
MultiPolygon
A collection of one or more polygons
Attributes
 geoms : sequence
 A sequence of Polygon instances
GeometryCollection
A heterogenous collection of geometries (Points, LineStrings, LinearRings and Polygons)
Attributes
 geoms : sequence
 A sequence of geometry instances
Please note: GEOMETRYCOLLECTION isn't supported by the Shapefile format. And this subclass isn't generally supported by ordinary GIS sw (viewers and so on). So it's very rarely used in the real GIS professional world.
Functions
as_shape
Create a pygeoif feature from an object that provides the __geo_interface__
>>> from shapely.geometry import Point >>> from pygeoif import geometry >>> geometry.as_shape(Point(0,0)) <pygeoif.geometry.Point object at 0x...>
from_wkt
Create a geometry from its WKT representation
>>> p = geometry.from_wkt('POINT (0 1)') >>> print p POINT (0.0 1.0)
signed_area
Return the signed area enclosed by a ring using the linear time algorithm at http://www.cgafaq.info/wiki/Polygon_Area. A value >= 0 indicates a counterclockwise oriented ring.
orient
Returns a copy of the polygon with exterior in counterclockwise and interiors in clockwise orientation for sign=1.0 and the other way round for sign=1.0
mapping
Returns the __geo_interface__ dictionary
Changelog
0.3 (2012/11/14)
 add GeometryCollection
 len(Multi*) and len(GeometryCollection) returns the number of contained Geometries
 add orient function to get clockwise or counterclockwise oriented poygons
 add signed_area function
 add _set_orientation method to lineStrings, Polygons and MultiPolygons
0.2.1 (2012/08/02)
 as_shape also accepts an object that is neither a dictionary nor has a __geo_interface__ but can be converted into a __geo_interface__ compliant dictionary
0.2 (2012/08/01)
 change license to LGPL
 add wkt as a property
 as_shape also accepts a __geo_interface__ compliant dictionary
 test with python3
0.1 (2012/07/27)
 initial release
File  Type  Py Version  Uploaded on  Size  

pygeoif0.3.0dev.tar.gz (md5)  Source  20121114  26KB  
 Downloads (All Versions):
 17 downloads in the last day
 196 downloads in the last week
 911 downloads in the last month
 Author: Christian Ledermann
 Home Page: https://github.com/cleder/pygeoif/
 Keywords: GIS Spatial WKT
 License: LGPL

Categories
 Development Status :: 4  Beta
 Intended Audience :: Developers
 License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
 Operating System :: OS Independent
 Programming Language :: Python
 Programming Language :: Python :: 2
 Programming Language :: Python :: 3
 Topic :: Scientific/Engineering :: GIS
 Package Index Owner: Christian.Ledermann
 DOAP record: pygeoif0.3.0dev.xml