Planar geometries, predicates, and operations
Project description
Shapely is a BSD-licensed Python package for manipulation and analysis of planar geometries. It is not concerned with data formats or coordinate systems. It is based on the widely deployed GEOS (the engine of PostGIS) and JTS (from which GEOS is ported) libraries. This C dependency is traded for the ability to analyze geometries with blazing speed.
In a nutshell: Shapely lets you do PostGIS-ish stuff outside the context of a database using idiomatic Python. For more details, see:
Shapely wiki
Shapely manual
Shapely example apps
Dependencies
Shapely 1.2 depends on:
Python >=2.5,<3
libgeos_c >=3.1 (3.0 and below have not been tested, YMMV)
Installation
Windows users should use the executable installer, which contains the required GEOS DLL. Other users should acquire libgeos_c by any means, make sure that it is on the system library path, and install from the Python package index:
$ pip install Shapely
or from a source distribution with the setup script:
$ python setup.py install
Usage
Here is the canonical example of building an approximately circular patch by buffering a point:
>>> from shapely.geometry import Point >>> patch = Point(0.0, 0.0).buffer(10.0) >>> patch <shapely.geometry.polygon.Polygon object at 0x...> >>> patch.area 313.65484905459385
See the manual for comprehensive usage snippets and the dissolve.py and intersect.py example apps.
Numpy integration
All linear geometries, such as the rings of a polygon, provide the Numpy array interface:
>>> from numpy import asarray >>> ag = asarray(patch.exterior) >>> ag array([[ 1.00000000e+01, 0.00000000e+00], [ 9.95184727e+00, -9.80171403e-01], [ 9.80785280e+00, -1.95090322e+00], ... [ 1.00000000e+01, 0.00000000e+00]])
That yields a numpy array of [x, y] arrays. This is not exactly what one wants for plotting shapes with Matplotlib, so Shapely 1.2 adds a xy geometry property for getting separate arrays of coordinate x and y values:
>>> x, y = patch.exterior.xy >>> ax = asarray(x) >>> ax array([ 1.00000000e+01, 9.95184727e+00, 9.80785280e+00, ...])
Numpy arrays can also be adapted to Shapely linestrings:
>>> from shapely.geometry import asLineString >>> asLineString(ag).length 62.806623139095073 >>> asLineString(ag).wkt 'LINESTRING (10.0000000000000000 0.0000000000000000, ...)'
Testing
Shapely uses a Zope-stye suite of unittests and doctests, excercised like:
$ python setup.py test
Support
For current information about this project, see the wiki.
If you have questions, please consider joining our community list:
Credits
Shapely is written by:
Sean Gillies (Pleiades)
Aron Bierbaum
Howard Butler (Hobu, Inc.)
Kai Lautaportti (Hexagon IT)
Frédéric Junod (Camptocamp SA)
Eric Lemoine (Camptocamp SA)
with additional help from:
Justin Bronn (GeoDjango) for ctypes inspiration
Martin Davis (JTS)
Sandro Santilli, Mateusz Loskot, Paul Ramsey, et al (GEOS Project)
Major portions of this work were supported by a grant (for Pleiades) from the U.S. National Endowment for the Humanities (http://www.neh.gov).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file Shapely-1.2b1.tar.gz
.
File metadata
- Download URL: Shapely-1.2b1.tar.gz
- Upload date:
- Size: 36.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d858ff8bd3cf816fc5abaf771a329a538de7efc34ef93f0a575c6b9e31abc2d7 |
|
MD5 | a0202bb343ce80e27458667fdc25280d |
|
BLAKE2b-256 | 928fdffaa96fee14662c0ff5678e46e7161b9ed1445e8c4c2b69b7a1c7903034 |