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.

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.0rc2.tar.gz (1.7 MB view details)

Uploaded Source

Built Distributions

rasterio-1.0rc2-cp36-cp36m-manylinux1_x86_64.whl (18.7 MB view details)

Uploaded CPython 3.6m

rasterio-1.0rc2-cp36-cp36m-macosx_10_9_x86_64.whl (22.9 MB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

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

Uploaded CPython 3.5m

rasterio-1.0rc2-cp35-cp35m-macosx_10_9_intel.macosx_10_9_x86_64.whl (22.9 MB view details)

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

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

Uploaded CPython 3.4m

rasterio-1.0rc2-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.0rc2-cp27-cp27mu-manylinux1_x86_64.whl (18.1 MB view details)

Uploaded CPython 2.7mu

rasterio-1.0rc2-cp27-cp27m-manylinux1_x86_64.whl (18.1 MB view details)

Uploaded CPython 2.7m

rasterio-1.0rc2-cp27-cp27m-macosx_10_9_x86_64.whl (23.0 MB view details)

Uploaded CPython 2.7m macOS 10.9+ x86-64

File details

Details for the file rasterio-1.0rc2.tar.gz.

File metadata

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

File hashes

Hashes for rasterio-1.0rc2.tar.gz
Algorithm Hash digest
SHA256 725fd4fcb69c219a6d0a14c0c4ed5f56b11dc4a0a8ac51f5de2ab8eb09910b47
MD5 93e44111f1745c8651ae9036629b33ef
BLAKE2b-256 791e06553eb24a6a8e854a98d5cf6f3bab100e5aaac781a8e8a77b6e3a162ecc

See more details on using hashes here.

File details

Details for the file rasterio-1.0rc2-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0rc2-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 1e4c394b017df42b4497fc76635a80915c9a5ab4207dad6706bfefbb06f193dd
MD5 e18d4dc836778bd00d651a90a98cb382
BLAKE2b-256 d31fe690a02c1464305b172a6664338595b8d2c0304f46d835f4fe8ca245be5f

See more details on using hashes here.

File details

Details for the file rasterio-1.0rc2-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0rc2-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4df13038d726c609ee22d6d6b4e587620440bd115741661c99dc7766ccef4b59
MD5 22eb5e450e02489a89d8c457a6ecb965
BLAKE2b-256 9028a41afb82493a897020f80df6c7fc7ca3a6b82c707af73d7a7dd2026ef1c4

See more details on using hashes here.

File details

Details for the file rasterio-1.0rc2-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0rc2-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 c2925c6330ea4e06882e55b2abda7afb5288ba9f4edcbd50210850f752c7e8db
MD5 8ad147ae433524c169d8f84603b1af63
BLAKE2b-256 44de2b548bc3480a830ac2eb912b33128e534054e433f4747e4c46fd8e7c6e6d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rasterio-1.0rc2-cp35-cp35m-macosx_10_9_intel.macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 328565431f31ceac56d178e0bd8225a0462e38646996273454396fcb9bfa44fa
MD5 aa14d25ec68250a823ed0ba6161388d8
BLAKE2b-256 a55a41da1211302aee50fd4d77331db8861446bc4b3428c048c5a80e96e2eeca

See more details on using hashes here.

File details

Details for the file rasterio-1.0rc2-cp34-cp34m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0rc2-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 81ab02261c1e7802157ab88006a6ad5304766f5bc3786d62002e16f809c8a685
MD5 c784bd79e3a5f8a3fb3b8a87f6b63317
BLAKE2b-256 4b31a68d2a42fad2e472048ca6edbe3e02011ef2e028dddace4fc4ec8d06cf4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rasterio-1.0rc2-cp34-cp34m-macosx_10_9_intel.macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 56104132d461436680b7997d1ad4b365d135d41d1031bbaadbfcb6397acee492
MD5 d279c8b9382be876d25cdaaa2679d789
BLAKE2b-256 1f3b6d4ec7fa98ba29fdfcbb3f312dc3587c0ee40f4f4003a29dce704a90659f

See more details on using hashes here.

File details

Details for the file rasterio-1.0rc2-cp27-cp27mu-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0rc2-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 0775ec14f5f421c6a89ddf3e68c96d78ffb235d06df00f48c7ae5b95b767a988
MD5 b66287b41aa1e696147b5c9c604223c4
BLAKE2b-256 dfd8d2a01b380f3cddd20c6e1c722aaf9dbdb940e35572179c21ff50259b6556

See more details on using hashes here.

File details

Details for the file rasterio-1.0rc2-cp27-cp27m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0rc2-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b4a3eb35dbd22269e3928892a710f644916993b321592621e6b9a2067d9d4fd9
MD5 a65df97dc90dac1caec61c6be1c9e1ce
BLAKE2b-256 0390e8968728f26557c9b66cb777d5e41d7acc3791ec1469bf6b2215852a4413

See more details on using hashes here.

File details

Details for the file rasterio-1.0rc2-cp27-cp27m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0rc2-cp27-cp27m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e9d3667f546e52fccbfde6f0009a19c20a98a30b5a954614745dd1b06b155649
MD5 453b3fbfdaed407e4f7043d623b12bfd
BLAKE2b-256 0b090d71565efd6d179fa45d8be34e7062ce7b831d89ae69b64b9ce11c45e66f

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