Skip to main content

Fast and direct raster I/O for use with Numpy and SciPy

Project description

Rasterio reads and writes geospatial raster data.

https://travis-ci.org/mapbox/rasterio.png?branch=master https://coveralls.io/repos/github/mapbox/rasterio/badge.svg?branch=master

Geographic information systems use GeoTIFF and other formats to organize and store gridded, or raster, datasets. Rasterio reads and writes these formats and provides a Python API based on N-D arrays.

Rasterio supports Python 2.7 and 3.3-3.6 on Linux and Mac OS X.

Read the documentation for more details: https://rasterio.readthedocs.io/en/latest/.

Example

Here’s an example of some basic features that Rasterio provides. Three bands are read from an image and averaged to produce something like a panchromatic band. This new band is then written to a new single band TIFF.

import numpy as np
import rasterio

# Read raster bands directly to Numpy arrays.
#
with rasterio.open('tests/data/RGB.byte.tif') as src:
    r, g, b = src.read()

# Combine arrays in place. Expecting that the sum will
# temporarily exceed the 8-bit integer range, initialize it as
# a 64-bit float (the numpy default) array. Adding other
# arrays to it in-place converts those arrays "up" and
# preserves the type of the total array.
total = np.zeros(r.shape)
for band in r, g, b:
    total += band
total /= 3

# Write the product as a raster band to a new 8-bit file. For
# the new file's profile, we start with the meta attributes of
# the source file, but then change the band count to 1, set the
# dtype to uint8, and specify LZW compression.
profile = src.profile
profile.update(dtype=rasterio.uint8, count=1, compress='lzw')

with rasterio.open('example-total.tif', 'w', **profile) as dst:
    dst.write(total.astype(rasterio.uint8), 1)

The output:

http://farm6.staticflickr.com/5501/11393054644_74f54484d9_z_d.jpg

API Overview

Rasterio gives access to properties of a geospatial raster file.

with rasterio.open('tests/data/RGB.byte.tif') as src:
    print(src.width, src.height)
    print(src.crs)
    print(src.transform)
    print(src.count)
    print(src.indexes)

# Printed:
# (791, 718)
# {u'units': u'm', u'no_defs': True, u'ellps': u'WGS84', u'proj': u'utm', u'zone': 18}
# Affine(300.0379266750948, 0.0, 101985.0,
#        0.0, -300.041782729805, 2826915.0)
# 3
# [1, 2, 3]

A rasterio dataset also provides methods for getting extended array slices given georeferenced coordinates.

with rasterio.open('tests/data/RGB.byte.tif') as src:
    print src.window(**src.window_bounds(((100, 200), (100, 200))))

# Printed:
# ((100, 200), (100, 200))

Rasterio CLI

Rasterio’s command line interface, named “rio”, is documented at cli.rst. Its rio insp command opens the hood of any raster dataset so you can poke around using Python.

$ rio insp tests/data/RGB.byte.tif
Rasterio 0.10 Interactive Inspector (Python 3.4.1)
Type "src.meta", "src.read(1)", or "help(src)" for more information.
>>> src.name
'tests/data/RGB.byte.tif'
>>> src.closed
False
>>> src.shape
(718, 791)
>>> src.crs
{'init': 'epsg:32618'}
>>> b, g, r = src.read()
>>> b
masked_array(data =
 [[-- -- -- ..., -- -- --]
 [-- -- -- ..., -- -- --]
 [-- -- -- ..., -- -- --]
 ...,
 [-- -- -- ..., -- -- --]
 [-- -- -- ..., -- -- --]
 [-- -- -- ..., -- -- --]],
             mask =
 [[ True  True  True ...,  True  True  True]
 [ True  True  True ...,  True  True  True]
 [ True  True  True ...,  True  True  True]
 ...,
 [ True  True  True ...,  True  True  True]
 [ True  True  True ...,  True  True  True]
 [ True  True  True ...,  True  True  True]],
       fill_value = 0)

>>> np.nanmin(b), np.nanmax(b), np.nanmean(b)
(0, 255, 29.94772668847656)

Rio Plugins

Rio provides the ability to create subcommands using plugins. See cli.rst for more information on building plugins.

See the plugin registry for a list of available plugins.

Installation

Please install Rasterio in a virtual environment so that its requirements don’t tamper with your system’s Python.

SSL certs

The Linux wheels on PyPI are built on CentOS and libcurl expects certs to be in /etc/pki/tls/certs/ca-bundle.crt. Ubuntu’s certs, for example, are in a different location. You may need to use the CURL_CA_BUNDLE environment variable to specify the location of SSL certs on your computer. On an Ubuntu system set the variable as shown below.

$ export CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt

Dependencies

Rasterio has a C library dependency: GDAL >=1.11. GDAL itself depends on some other libraries provided by most major operating systems and also depends on the non standard GEOS and PROJ4 libraries. How to meet these requirement will be explained below.

Rasterio’s Python dependencies are listed in its requirements.txt file.

Development also requires (see requirements-dev.txt) Cython and other packages.

Binary Distributions

Use a binary distributions that directly or indirectly provide GDAL if possible.

Linux

Rasterio distributions are available from UbuntuGIS and Anaconda’s conda-forge channel.

Manylinux1 distributions may be available in the future.

OS X

Binary distributions with GDAL, GEOS, and PROJ4 libraries included are available for OS X versions 10.7+ starting with Rasterio version 0.17. To install, run pip install rasterio. These binary wheels are preferred by newer versions of pip.

If you don’t want these wheels and want to install from a source distribution, run pip install rasterio --no-binary rasterio instead.

The included GDAL library is fairly minimal, providing only the format drivers that ship with GDAL and are enabled by default. To get access to more formats, you must build from a source distribution (see below).

Windows

Binary wheels for rasterio and GDAL are created by Christoph Gohlke and are available from his website.

To install rasterio, simply download both binaries for your system (rasterio and GDAL) and run something like this from the downloads folder:

$ pip install -U pip
$ pip install GDAL-2.0.2-cp27-none-win32.whl
$ pip install rasterio-0.34.0-cp27-cp27m-win32.whl

Source Distributions

Rasterio is a Python C extension and to build you’ll need a working compiler (XCode on OS X etc). You’ll also need Numpy preinstalled; the Numpy headers are required to run the rasterio setup script. Numpy has to be installed (via the indicated requirements file) before rasterio can be installed. See rasterio’s Travis configuration for more guidance.

Linux

The following commands are adapted from Rasterio’s Travis-CI configuration.

$ sudo add-apt-repository ppa:ubuntugis/ppa
$ sudo apt-get update
$ sudo apt-get install gdal-bin libgdal-dev
$ pip install -U pip
$ pip install rasterio

Adapt them as necessary for your Linux system.

OS X

For a Homebrew based Python environment, do the following.

$ brew update
$ brew install gdal
$ pip install -U pip
$ pip install --no-use-wheel rasterio

Alternatively, you can install GDAL binaries from kyngchaos. You will then need to add the installed location /Library/Frameworks/GDAL.framework/Programs to your system path.

Windows

You can download a binary distribution of GDAL from here. You will also need to download the compiled libraries and headers (include files).

When building from source on Windows, it is important to know that setup.py cannot rely on gdal-config, which is only present on UNIX systems, to discover the locations of header files and libraries that rasterio needs to compile its C extensions. On Windows, these paths need to be provided by the user. You will need to find the include files and the library files for gdal and use setup.py as follows.

$ python setup.py build_ext -I<path to gdal include files> -lgdal_i -L<path to gdal library>
$ python setup.py install

We have had success compiling code using the same version of Microsoft’s Visual Studio used to compile the targeted version of Python (more info on versions used here.).

Note: The GDAL dll (gdal111.dll) and gdal-data directory need to be in your Windows PATH otherwise rasterio will fail to work.

Support

The primary forum for questions about installation and usage of Rasterio is https://rasterio.groups.io/g/main. The authors and other users will answer questions when they have expertise to share and time to explain. Please take the time to craft a clear question and be patient about responses.

Please do not bring these questions to Rasterio’s issue tracker, which we want to reserve for bug reports and other actionable issues.

While Rasterio’s repo is in the Mapbox GitHub organization, Mapbox’s Support team is focused on customer support for its commercial platform and Rasterio support requests may be perfunctorily closed with or without a link to https://rasterio.groups.io/g/main. It’s better to bring questions directly to the main Rasterio group at groups.io.

Development and Testing

See CONTRIBUTING.rst.

Documentation

See docs/.

License

See LICENSE.txt.

Authors

See AUTHORS.txt.

Changes

See CHANGES.txt.

Who is Using Rasterio?

See here.

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

rasterio-1.0.0.tar.gz (1.8 MB view details)

Uploaded Source

Built Distributions

rasterio-1.0.0-cp37-cp37m-manylinux1_x86_64.whl (18.6 MB view details)

Uploaded CPython 3.7m

rasterio-1.0.0-cp37-cp37m-macosx_10_9_x86_64.whl (23.0 MB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

rasterio-1.0.0-cp36-cp36m-manylinux1_x86_64.whl (18.6 MB view details)

Uploaded CPython 3.6m

rasterio-1.0.0-cp36-cp36m-macosx_10_9_x86_64.whl (23.0 MB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

rasterio-1.0.0-cp35-cp35m-manylinux1_x86_64.whl (18.5 MB view details)

Uploaded CPython 3.5m

rasterio-1.0.0-cp35-cp35m-macosx_10_9_intel.macosx_10_9_x86_64.whl (23.0 MB view details)

Uploaded CPython 3.5m macOS 10.9+ intel macOS 10.9+ x86-64

rasterio-1.0.0-cp34-cp34m-manylinux1_x86_64.whl (18.6 MB view details)

Uploaded CPython 3.4m

rasterio-1.0.0-cp34-cp34m-macosx_10_9_intel.macosx_10_9_x86_64.whl (23.0 MB view details)

Uploaded CPython 3.4m macOS 10.9+ intel macOS 10.9+ x86-64

rasterio-1.0.0-cp27-cp27mu-manylinux1_x86_64.whl (18.2 MB view details)

Uploaded CPython 2.7mu

rasterio-1.0.0-cp27-cp27m-manylinux1_x86_64.whl (18.2 MB view details)

Uploaded CPython 2.7m

rasterio-1.0.0-cp27-cp27m-macosx_10_9_x86_64.whl (23.1 MB view details)

Uploaded CPython 2.7m macOS 10.9+ x86-64

File details

Details for the file rasterio-1.0.0.tar.gz.

File metadata

  • Download URL: rasterio-1.0.0.tar.gz
  • Upload date:
  • Size: 1.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for rasterio-1.0.0.tar.gz
Algorithm Hash digest
SHA256 6f2e90f2b740d727b36e39550e2a949d52551717812f9b4748f9bc351d666274
MD5 64d18154377c01f45b5db656d9c5be9c
BLAKE2b-256 3322ad2ea27c9829582ab5280f35cc61e424970ce0add34e258c9e171a62cb73

See more details on using hashes here.

File details

Details for the file rasterio-1.0.0-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0.0-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 48d602e1bd714974d109f2f0692c6f1641e50426100a0ff836a5e871c2b45d86
MD5 899cb2bca365ef92b70be92466d19f90
BLAKE2b-256 40b26aa5430d6c3f9ccc5a6be788e090b2c7f2d363ccfcffc0821641db86cc4d

See more details on using hashes here.

File details

Details for the file rasterio-1.0.0-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 80fff70e4f74dfa191dc4bd6aa72ba6d932af8eb5e899208931078800834903b
MD5 da4d130679b448d6577fb99f37e0aac1
BLAKE2b-256 4382edfd6f30240af148c25b527f9c746e95bdfa1d950bc6258faac291715a3b

See more details on using hashes here.

File details

Details for the file rasterio-1.0.0-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 139c7506ae73f072d0abff1a971d05e89256faacc8b3c6fb63cdfdd46940a87c
MD5 1856f8785b08fe0815153cdccb973b61
BLAKE2b-256 8ec95b2dc3f985cd0ee911c4c2312ebcbd897a2fed9e7f50c742e3957f61c7d9

See more details on using hashes here.

File details

Details for the file rasterio-1.0.0-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 47e070fe024483003a9429c50edba07a0f163afdfdabe28f7f15054c69bcadf0
MD5 eac19fffc625bec8073f4779e3bd0380
BLAKE2b-256 f8d9dcb56a1347b01a6a72ff1fc0df949c146cbeabb0eff0cd546c6a3f1eb4e1

See more details on using hashes here.

File details

Details for the file rasterio-1.0.0-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b09077acefebc79057125bf78cc9c70c391bf209eff746452e744e268c77582d
MD5 7949b2d928a86218ca275b48ce6b6b03
BLAKE2b-256 ab0d4bb5c644016f68d94a3158616a4839f514bb82bca19149436f3593e01c48

See more details on using hashes here.

File details

Details for the file rasterio-1.0.0-cp35-cp35m-macosx_10_9_intel.macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0.0-cp35-cp35m-macosx_10_9_intel.macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d70a6548f88206fbe9d97723758fad9345d885105ae9f0d026f57905b6b90129
MD5 b1462f9f432d74650ce513ef98d52982
BLAKE2b-256 79dab067b6bef4ac6d10c6ffaab1174c1e830e93c52ac5759c0e63d399b7c19f

See more details on using hashes here.

File details

Details for the file rasterio-1.0.0-cp34-cp34m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0.0-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 fde1ea4b87cc8c210391e9c4215575b946753217bdedf75c241f79023b4581d1
MD5 5cf2f114e63ff93264e1b5ebaa7ee54d
BLAKE2b-256 dc926978e0cb8a187ad9866c52e7044a552e77a33e66f21aef33dec33a2c39dd

See more details on using hashes here.

File details

Details for the file rasterio-1.0.0-cp34-cp34m-macosx_10_9_intel.macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0.0-cp34-cp34m-macosx_10_9_intel.macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 aeca4bbb015f6a14c876de155c642b38865ddb60cf4ba1f9657c3d8f3683ee54
MD5 5e86fe89bf6a3f79a2c9f436e5776acb
BLAKE2b-256 002b1cc157f3a4db1f883acf1f76a5758389abc7ac5195093dedcede634cbc7c

See more details on using hashes here.

File details

Details for the file rasterio-1.0.0-cp27-cp27mu-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0.0-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 ee9f483e905b1dfa2a1b249ad8f3c19bdd9efacbb73b822c752e884a05f18f41
MD5 450c6e249c4c0270c3d5a52b63c1266c
BLAKE2b-256 da2968ebccae7107624d9b6ecc14686228b90d4f8c3550e7e6c97fa6733af455

See more details on using hashes here.

File details

Details for the file rasterio-1.0.0-cp27-cp27m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0.0-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 145008c61e940e305a1c90dd4c7913c30d86c0679ec17f9297a2e6bb3e17c137
MD5 ce13f6c9f148905b7ff50aa83ba6f769
BLAKE2b-256 a13a680379387a7efef115d50bf09230afff377f37924760131485057ef9bbca

See more details on using hashes here.

File details

Details for the file rasterio-1.0.0-cp27-cp27m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0.0-cp27-cp27m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 043dc18c2f88c36aff4d441de9c9ad2ad43b2c5e7213f8a1a94b42889cf1f25c
MD5 68adab4410bff90c93088a499c2c9205
BLAKE2b-256 54d88213571264ea0169310683a8a74dadecfdd9ff482d7fc43ee182f6024745

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