Skip to main content

Planar geometries, predicates, and operations

Project description

http://farm3.static.flickr.com/2738/4511827859_b5822043b7_o_d.png

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:

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:

http://trac.gispython.org/projects/PCL/wiki/CommunityList

Credits

Shapely is written by:

  • Sean Gillies

  • Aron Bierbaum

  • Kai Lautaportti

Patches contributed by:

  • Howard Butler

  • Frédéric Junod

  • Eric Lemoine

  • Jonathan Tartley

  • Kristian Thy

  • Oliver Tonnhofer

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

Shapely-1.2b6.tar.gz (37.9 kB view details)

Uploaded Source

Built Distributions

Shapely-1.2b6.win32-py2.6.exe (964.1 kB view details)

Uploaded Source

Shapely-1.2b6.win32-py2.5.exe (829.4 kB view details)

Uploaded Source

Shapely-1.2b6.win32-py2.4.exe (829.4 kB view details)

Uploaded Source

File details

Details for the file Shapely-1.2b6.tar.gz.

File metadata

  • Download URL: Shapely-1.2b6.tar.gz
  • Upload date:
  • Size: 37.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for Shapely-1.2b6.tar.gz
Algorithm Hash digest
SHA256 4c80495e927e3b7d29e3f3eee669b931dc57d51e8dd6b56ac7590d8991de8058
MD5 3b5725eeb86192da982c414a69626f8f
BLAKE2b-256 09a717d2c96c9f00d28f80d6d25b128c6a7a11ebbbf4a3ddfa2d9ce4bf9abfde

See more details on using hashes here.

File details

Details for the file Shapely-1.2b6.win32-py2.6.exe.

File metadata

File hashes

Hashes for Shapely-1.2b6.win32-py2.6.exe
Algorithm Hash digest
SHA256 5ad6221b000fdab61257df838f28e6151ccadb1baab59fe9a99315e104d2c539
MD5 8e12154f0945a591762abf7000c12b99
BLAKE2b-256 2dd6355d54c6e28a43a8690ade31f44758f3b6141c1f57cf5d12934e41e4ed0d

See more details on using hashes here.

File details

Details for the file Shapely-1.2b6.win32-py2.5.exe.

File metadata

File hashes

Hashes for Shapely-1.2b6.win32-py2.5.exe
Algorithm Hash digest
SHA256 b2a92081329c3ae202f2b4cc5d710940a7e78b1c202af32469f4f52ecf9d2802
MD5 6dc74ca447cff38fe9f939c9f36cc034
BLAKE2b-256 e9d36b9d1e8cc3ce8f7e8eedb6425d25072a1dbd47ca41b752cd29681fd259aa

See more details on using hashes here.

File details

Details for the file Shapely-1.2b6.win32-py2.4.exe.

File metadata

File hashes

Hashes for Shapely-1.2b6.win32-py2.4.exe
Algorithm Hash digest
SHA256 74988dccce2d58254132fe2fb392295738e0f558612e499f40084bdd1b410052
MD5 b96de3308011fb728fbbb334aeb9d3ac
BLAKE2b-256 88a6fa3adb0d5c5b35fd27204d07ba7bfede921a841733b05ae651f1404a9d46

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page