Skip to main content

rasterstats

BuildStatus CoverageStatus PyPiVersion PyPiDownloads

The rasterstats python module provides a fast and flexible tool to summarize geospatial raster datasets based on vector geometries (i.e. zonal statistics).

  • 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:

zones elevation
>>> from rasterstats import raster_stats
>>> stats = raster_stats("tests/data/polygons.shp", "tests/data/elevation.tif")

>>> stats[1].keys()
    ['__fid__', 'count', 'min', 'max', 'mean']

>>> [(f['id'], f['mean']) for f in stats]
    [(1, 756.6057470703125), (2, 114.660084635416666)]

Statistics

By default, the raster_stats function will return the following statistics

  • min

  • max

  • mean

  • count

Optionally, these statistics are also available

  • sum

  • std

  • median

  • majority

  • minority

  • unique

  • range

You can specify the statistics to calculate using the stats argument:

>>> stats = raster_stats("tests/data/polygons.shp",
                         "tests/data/elevation.tif"
                         stats=['min', 'max', 'median', 'majority', 'sum'])

>>> # also takes space-delimited string
>>> stats = raster_stats("tests/data/polygons.shp",
                         "tests/data/elevation.tif"
                         stats="min max median majority sum")

Note that the more complex statistics may require significantly more processing so performance can be impacted based on which statistics you choose to calculate.

Specifying Geometries

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')
...

Feature Properties

By default, an __fid__ property is added to each feature’s results. None of the other feature attributes/proprties are copied over unless copy_properties is set to True:

>>> stats = raster_stats("tests/data/polygons.shp",
                         "tests/data/elevation.tif"
                         copy_properties=True)

>>> stats[0].has_key('name')  # name field from original shapefile is retained
True

Working with categorical rasters

You can treat rasters as categorical (i.e. raster values represent discrete classes) if you’re only interested in the counts of unique pixel values.

For example, you may have a raster vegetation dataset and want to summarize vegetation by polygon. Statistics such as mean, median, sum, etc. don’t make much sense in this context (What’s the sum of oak + grassland?).

The polygon below 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

Metadata

Release files for rasterstats 0.3.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distributions (sdists)

Source distribution for rasterstats 0.3.2
File Size Uploaded
rasterstats-0.3.2.zip 16.6 kB Details
rasterstats-0.3.2.tar.gz 11.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for rasterstats 0.3.2
File Interpreter ABI Platform
rasterstats-0.3.2.win32.exe Details

Total release size: 239.4 kB

Release files / rasterstats-0.3.2.zip

Download URL rasterstats-0.3.2.zip
Size 16.6 kB
Tags Source
SHA-256 checksum
How to use checksums
b9aed62836a32cff2ae140d9d31314a651e87f1bb6bc22c9a264c333c78c16bc
BLAKE2b-256 checksum
How to use checksums
11722111c9ff96fe3bcd54321a7ebd4e500b5d5f6f92f1cc151d54277ddfa56a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / rasterstats-0.3.2.tar.gz

Download URL rasterstats-0.3.2.tar.gz
Size 11.1 kB
Tags Source
SHA-256 checksum
How to use checksums
3349240b62319d2e67c1434d018afb798f76a3a0189e676146e1dc00674942b5
BLAKE2b-256 checksum
How to use checksums
b5011bfc0222fba1dec4a3edddc7a40b05cab0bc739633fcb2ddcaf5629cc844
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / rasterstats-0.3.2.win32.exe

Download URL rasterstats-0.3.2.win32.exe
Size 211.7 kB
Tags Source
SHA-256 checksum
How to use checksums
e9b6981b86e30bdad5f11af17b1100a555436d8b8dc012d87311a9a485ea0be9
BLAKE2b-256 checksum
How to use checksums
2a7d0d1dc1a2ccc27d60c5d6a376bb2f77c167655b2766106bab1e78180b004a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

0.21.0

2 release files

0.20.0

2 release files

0.19.0

2 release files

0.18.0

2 release files

0.17.0

2 release files

0.16.0

2 release files

0.15.0

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.1

2 release files

0.10.3

4 release files

0.10.2

2 release files

0.10.0

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6

2 release files

0.5

2 release files

0.4

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

This release

0.3.2 This release

3 release files

0.3.1

1 release file

0.3

1 release file

0.2

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page