Skip to main content

# Overview

pyspatial is python package to provide data structures on top of gdal/ogr. It’s core use cases have been around simplifying geospatial data science workflows in Python. The 3 core data stuctures are:

  • VectorLayer: a collection of geometries with pandas like manipulation. Each geometry is an osgeo.ogr.Geometry object. For an object reference see [http://gdal.org/python/].

  • RasterDataset: an abstraction of a spatial raster (both tiled on untiled) to support querying of pixels that intersect with shapes.

  • RasterBand: a numpy array representation of a raster with spatial metadata (in memory only, no tiled support).

pyspatial makes it easy to read, analyze, query, and visualize spatial data in both vector and raster form. It brings the familiarity of pandas to working with vector data, and provides querying capability similar to PostGIS for both vector and raster data. Since it uses GDAL for much of the computations, the performance is quite good. Based on the authors’ experience, the performance has been significantly better than PostGIS, and orders of magnitude faster than similar libraries in R.

## Library Highlights
  • Battle tested: we use it for our day-to-day work, and for processing all the data behind AcreValue. In fact, all of our PostGIS workflows have been migrated to pyspatial.

  • Read/write both raster and vector data (including support for http/s3 sources). Also convert to/from shapely/gdal/ogr/numpy objects seamlessly.

  • Fast spatial queries since it leverages GDAL and libspatialindex/RTree. For extracting vector data from a raster, the library is 60x - 100x faster than R.

  • Integration of vector/raster data structures to make interoperation seamless.

  • Pandas like API for working with collections of geometries.

  • First class support for spatial projections. The data structures are spatial projection aware, and allow you to easily transform between projections.

  • When performing operations between data sources, the data will automatically be reprojected intelligently. No more spatial projection management!

  • Integrated interactive visualization within IPython (via Leaflet). Plots markers, geometries, and choropleths too!

# Examples

http://nbviewer.jupyter.org/github/granularag/pyspatial/tree/master/examples/

# Development

  • Python code: pip install -e /path/to/pyspatial

  • Cython code: python setup.py build_ext –inplace

  • Tests: nosetests -v

# Known Issues

  • In ogr, when you get the centroid of a geometry (e.g. cent = my_geometry.Centroid()), cent does not inherit the spatial reference. It needs to be reassigned using cent.AssignSpatialReference(my_geometry.GetSpatialReference())

  • VectorLayer object does not support a Float64Index

  • If you encouter: * “TypeError: object of type ‘Geometry’ has no len()”, most likely you have duplicate values in your index. Make sure your index is unique.

# Contributors

  • Aman Thakral (Lead, github: aman-thakral)

  • Josh Daniel (github: joshdaniel)

  • Chris Seifert (github: caseifert)

  • Ron Potok (github: rpotok)

  • Sandra Guteg (github: guetgs)

  • Emma Fuller (github: emfuller)

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyspatial-0.1.4.tar.gz (96.2 kB view details)

Uploaded Source

File details

Details for the file pyspatial-0.1.4.tar.gz.

File metadata

  • Download URL: pyspatial-0.1.4.tar.gz
  • Upload date:
  • Size: 96.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyspatial-0.1.4.tar.gz
Algorithm Hash digest
SHA256 d97fb8ca47684cd20659785a541f0e32075cdc23e134761d34e199c7aef5711c
MD5 dc5358ad51cc38fb987a88b6761d909e
BLAKE2b-256 be8e38680a60c87da016a67e7674088562e8cfbb1d478ef75759a2963de7fd82

See more details on using hashes here.

Supported by

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