Summarize geospatial raster datasets based on vector geometries
Project description
The rasterstats python module provides a fast, flexible and robust tool to summarize geospatial raster datasets based on vector geometries.
Raster data support
Any raster data source supported by GDAL
Support for continuous and categorical
Respects null/no-data metadata or takes argument
Vector data support
Points, Lines, Polygon and Multi-* geometries
Flexible input formats
Any vector data source supported by OGR
Python objects that are geojson-like mappings or support the geo_interface
Well-Known Text/Binary (WKT/WKB) geometries
Depends on GDAL, Shapely and numpy
Install
Using ubuntu 12.04:
sudo apt-get install python-numpy python-gdal pip install rasterstats
Example Usage
Given a polygon vector layer and a digitial elevation model (DEM) raster, calculate the mean elevation of each polygon:
>>> from rasterstats import raster_stats >>> stats = raster_stats("tests/data/polygons.shp", "tests/data/elevation.tif") >>> stats[1].keys() ['std', 'count', 'min', 'max', 'sum', 'id', 'mean'] >>> [(f['id'], f['mean']) for f in stats] [(1, 756.6057470703125), (2, 114.660084635416666)]
Python interface
In addition to the basic usage above, rasterstats supports other mechanisms of specifying vector geometeries.
It integrates with other python objects that support the geo_interface (e.g. Fiona, Shapely, ArcPy, PyShp, GeoDjango):
>>> import fiona >>> # an iterable of objects with geo_interface >>> lyr = fiona.open('/path/to/vector.shp') >>> features = (x for x in lyr if x['properties']['state'] == 'CT') >>> raster_stats(features, '/path/to/elevation.tif') ... >>> # a single object with a geo_interface >>> lyr = fiona.open('/path/to/vector.shp') >>> raster_stats(lyr.next(), '/path/to/elevation.tif') ...
Or by using with geometries in “Well-Known” formats:
>>> raster_stats('POINT(-124 42)', '/path/to/elevation.tif') ...
Working with categorical rasters (e.g. vegetation map)
You can treat rasters as categorical (i.e. raster values represent discrete classes) if only interested in the counts of unique pixel values.
For example, this polygon is comprised of 12 pixels of oak (raster value 32) and 78 pixels of grassland (raster value 33):
>>> raster_stats(lyr.next(), '/path/to/vegetation.tif', categorical=True) >>> [{'id': 1, 32: 12, 33: 78}]
Keep in mind that rasterstats just reports on the pixel values as keys; It is up to the programmer to associate the pixel values with their appropriate meaning (e.g. oak == 32) for reporting.
Issues
Find a bug? Report it via github issues by providing
a link to download the smallest possible raster and vector dataset necessary to reproduce the error
python code or command to reproduce the error
information on your environment: versions of python, gdal and numpy and system memory
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 rasterstats-0.1.tar.gz
.
File metadata
- Download URL: rasterstats-0.1.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2837c20259b2d735c5246ecfc75184375f1a5218f65a65f012d0b55b8cea05b |
|
MD5 | 420a67c1d5296fc9021abbbcd750569d |
|
BLAKE2b-256 | 4b58a8b158295c0ced2ee419556c936f4d358668c67bd0d13fb72df90d726da9 |