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://mapbox.github.io/rasterio/.

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.

Dependencies

Rasterio has a C library dependency: GDAL >=1.9. 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 upgrade
$ 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.

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

Uploaded Source

Built Distributions

rasterio-1.0a7-cp36-cp36m-manylinux1_x86_64.whl (41.8 MB view details)

Uploaded CPython 3.6m

rasterio-1.0a7-cp35-cp35m-manylinux1_x86_64.whl (41.7 MB view details)

Uploaded CPython 3.5m

rasterio-1.0a7-cp35-cp35m-macosx_10_6_intel.whl (18.6 MB view details)

Uploaded CPython 3.5m macOS 10.6+ intel

rasterio-1.0a7-cp34-cp34m-manylinux1_x86_64.whl (41.7 MB view details)

Uploaded CPython 3.4m

rasterio-1.0a7-cp34-cp34m-macosx_10_6_intel.whl (18.7 MB view details)

Uploaded CPython 3.4m macOS 10.6+ intel

rasterio-1.0a7-cp33-cp33m-manylinux1_x86_64.whl (41.5 MB view details)

Uploaded CPython 3.3m

rasterio-1.0a7-cp27-cp27mu-manylinux1_x86_64.whl (41.4 MB view details)

Uploaded CPython 2.7mu

rasterio-1.0a7-cp27-cp27m-manylinux1_x86_64.whl (41.4 MB view details)

Uploaded CPython 2.7m

rasterio-1.0a7-cp27-cp27m-macosx_10_6_intel.whl (18.7 MB view details)

Uploaded CPython 2.7m macOS 10.6+ intel

File details

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

File metadata

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

File hashes

Hashes for rasterio-1.0a7.tar.gz
Algorithm Hash digest
SHA256 1965eff702a66bae44ccf7bc35b3d0745dcc2325995b76eea1d4c1daeb430186
MD5 c5306f11042df1907dd29009ca664857
BLAKE2b-256 58ecd6b43d120fa05a097f9dacba6efed6e17b227c45587d2fc1f5eaa5181e0b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rasterio-1.0a7-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 7844a8fb12b2b98ff3fba7b6cc39489be1a765c50086f81aa0b31bfcd042aec4
MD5 6adc74888eaea488f76c3ee218f4c194
BLAKE2b-256 9f0f2234be540afb6960607870fffa6daa68b1e051d2bfef3c0ee9a4f8899c20

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rasterio-1.0a7-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a7d8c130c23ef47144f7d9c3c48607a47539a062e28d599dbb1660b701f1b2d5
MD5 083759734e4f92d48e92ea4cf22049b6
BLAKE2b-256 28ea84e6a9fed9e895fc5ac38fc1e7a31ea09d3423ba8a8720767b3175408e0b

See more details on using hashes here.

File details

Details for the file rasterio-1.0a7-cp35-cp35m-macosx_10_6_intel.whl.

File metadata

File hashes

Hashes for rasterio-1.0a7-cp35-cp35m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 8db686b4dc0afac21fd42e70d933d9f625a81a94b4a0362386a5652e6388a5e9
MD5 2a00e0f570d6ae5ba5f122c275e69ed3
BLAKE2b-256 1a6226f7b7aeb3bab18627460650c08bbfaf2d30a75fa1184e7348ace2872cb8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rasterio-1.0a7-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 bbd3232e7a2ea5f1284d0fde2a283198dc6aeb3db1512ec104f0ebed2a7ca6ba
MD5 d5b1baac643b8075f77446324cf040e0
BLAKE2b-256 a79dafbe67993e3e5bd4279356787feff92c0d10a6f22a64bb625a4fbb2242a0

See more details on using hashes here.

File details

Details for the file rasterio-1.0a7-cp34-cp34m-macosx_10_6_intel.whl.

File metadata

File hashes

Hashes for rasterio-1.0a7-cp34-cp34m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 508c83f0f23f349786a58376e16c590a9da7c4d8e9e82e9267d83350d5852402
MD5 1216f6841b458e9bc1f31f267815218c
BLAKE2b-256 fc3d4394c1f5aeecbb79d6071557835542049c15a08390769edc49568ddbaa6d

See more details on using hashes here.

File details

Details for the file rasterio-1.0a7-cp33-cp33m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0a7-cp33-cp33m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b9be6629577a3d5eb22187c34236fbbdffcd0041610c4dd53ffd7d4c1902df12
MD5 288f086f7ffefcb4a8a348fcfd6cb026
BLAKE2b-256 9796652643acbfb7711cff31297bbd41c33beb3fbeaf57d0a941e4688f32ce86

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rasterio-1.0a7-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 24d8208b6c73cb83aacf9bbc68b784d7ae6d39aea924254d230d663dea700339
MD5 6bb5483a9cdd3034307193a2e768e65b
BLAKE2b-256 207b4955265bd15d0fb64d588f82b506660aab99467c750f1444e8e9fb0d774e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rasterio-1.0a7-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 38a0e8ebdcf62f8e208cc3f34400f64d81e1b2fae362dac70aacc54bc832da3c
MD5 6b9f02823483d467139b659780659b3b
BLAKE2b-256 732b7b1f7a567fceb1e97fda16aa37e8565d8c8988aa2ef53cba50ee99ad9408

See more details on using hashes here.

File details

Details for the file rasterio-1.0a7-cp27-cp27m-macosx_10_6_intel.whl.

File metadata

File hashes

Hashes for rasterio-1.0a7-cp27-cp27m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 014587819a4a06830b871f9a86898c51095161af2897f9e651f3e00ee8943809
MD5 7178a055cbeca75d1f0369e618e4a6c0
BLAKE2b-256 e30417e008e8cf9d59e178de5a70fd26843904056a0a672433b070a06d759f12

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