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 1.0.x works with Python versions 2.7.x and 3.5.0 through 3.7.x, and GDAL versions 1.11.x through 2.4.x. Official binary packages for Linux and Mac OS X are available on PyPI. Unofficial binary packages for Windows are available through other channels.

Rasterio 1.0.x is not compatible with GDAL versions 3.0.0 or greater.

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

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 wheels are available on PyPI.

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

You can also install rasterio with conda using Anaconda’s conda-forge channel.

$ conda install -c conda-forge rasterio

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

Uploaded Source

Built Distributions

rasterio-1.1.7-cp38-cp38-manylinux1_x86_64.whl (18.1 MB view details)

Uploaded CPython 3.8

rasterio-1.1.7-cp38-cp38-macosx_10_9_x86_64.whl (17.5 MB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

rasterio-1.1.7-cp37-cp37m-manylinux1_x86_64.whl (18.1 MB view details)

Uploaded CPython 3.7m

rasterio-1.1.7-cp37-cp37m-macosx_10_9_x86_64.whl (17.4 MB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

rasterio-1.1.7-cp36-cp36m-manylinux1_x86_64.whl (18.1 MB view details)

Uploaded CPython 3.6m

rasterio-1.1.7-cp36-cp36m-macosx_10_9_x86_64.whl (17.5 MB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

rasterio-1.1.7-cp35-cp35m-manylinux1_x86_64.whl (18.1 MB view details)

Uploaded CPython 3.5m

rasterio-1.1.7-cp35-cp35m-macosx_10_9_intel.whl (17.4 MB view details)

Uploaded CPython 3.5m macOS 10.9+ intel

rasterio-1.1.7-cp27-cp27mu-manylinux1_x86_64.whl (18.1 MB view details)

Uploaded CPython 2.7mu

File details

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

File metadata

  • Download URL: rasterio-1.1.7.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.5

File hashes

Hashes for rasterio-1.1.7.tar.gz
Algorithm Hash digest
SHA256 8418c024f9bf7350d03855039d2700064532bae33a3c6ee885c8b6c8fc13415a
MD5 6f6ab85bd9b0e40202313d451c866982
BLAKE2b-256 50bf35e564093d84509406c3d96e147132067ddbc591966b9b52c3aa0331f1b8

See more details on using hashes here.

File details

Details for the file rasterio-1.1.7-cp38-cp38-manylinux1_x86_64.whl.

File metadata

  • Download URL: rasterio-1.1.7-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 18.1 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.5

File hashes

Hashes for rasterio-1.1.7-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 740303ef30e3c76fe439f4bee8d8354b49dd86251f614b74f1bd7c99bf553a78
MD5 d5a22334a551ed7b0f2e2486136d9709
BLAKE2b-256 9e1b0ff71840fbd3660eba3538c5a8ea1c694e9196d35e33337543fdb0024cb9

See more details on using hashes here.

File details

Details for the file rasterio-1.1.7-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: rasterio-1.1.7-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 17.5 MB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.5

File hashes

Hashes for rasterio-1.1.7-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0b09af5ba008ac1efe4216b5c7f48699a8a2714d8e76f553ced4dde3791a703f
MD5 611fe0c088925d1d857d01eac7e53684
BLAKE2b-256 8da43856a599dc6e9db4366f18a3282c3ce3a4cc5b2be0559d7600171034543e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rasterio-1.1.7-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 18.1 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.5

File hashes

Hashes for rasterio-1.1.7-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 da0150d0bf5a0dc31d208ccc7f4e8e198af27303e88851efd337d035608bb607
MD5 3be8e3bba8b7fb243f90e391b7b19135
BLAKE2b-256 f3628a58dd6b511eb6c8db3901d2bc1cb732a64d6ccef74b42137d4d27354450

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rasterio-1.1.7-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 17.4 MB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.5

File hashes

Hashes for rasterio-1.1.7-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 148dc46fbaf230f169853556c8432dc859f845b57dc1428472d47c75d4e38099
MD5 670fb181fba52287dc2e0a9a29993170
BLAKE2b-256 a6d590f67a7c3ba4083a44ff18590434a357bc88f5480c79a10dae37546ac755

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rasterio-1.1.7-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 18.1 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.5

File hashes

Hashes for rasterio-1.1.7-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 de519f1cfccca7da1e292dd3b0da5064833204f9ab4238098cea2bd1302356c2
MD5 1dc5905a8325a313800a9088bab1ee04
BLAKE2b-256 cc1c0f36885ac5864b8ad75f167ca1d403666a5f0c3b2ea8ad3366c98a628e99

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rasterio-1.1.7-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 17.5 MB
  • Tags: CPython 3.6m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.5

File hashes

Hashes for rasterio-1.1.7-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 324db829f49851969a647df7824e299cca7cab08446ff9dac8e33b291b66ce32
MD5 86468d8a040bb6ba29da7aa0684ccc81
BLAKE2b-256 2e13201dcee8a2b8b2b73975af4d8d5fdd149ec4366bd2ec5d2fde9d778d7bf9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rasterio-1.1.7-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 18.1 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.5

File hashes

Hashes for rasterio-1.1.7-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 193613110a325a97e7e74e2a0b45f05d1ac5398ecb19f3da95a776f165f1cfb8
MD5 8541013b1dfca96ae630b3b0e806e53d
BLAKE2b-256 a79af7f1de87ea168e361daf7fde07ceb54debda71c86cc785a4e946993f8bb8

See more details on using hashes here.

File details

Details for the file rasterio-1.1.7-cp35-cp35m-macosx_10_9_intel.whl.

File metadata

  • Download URL: rasterio-1.1.7-cp35-cp35m-macosx_10_9_intel.whl
  • Upload date:
  • Size: 17.4 MB
  • Tags: CPython 3.5m, macOS 10.9+ intel
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.5

File hashes

Hashes for rasterio-1.1.7-cp35-cp35m-macosx_10_9_intel.whl
Algorithm Hash digest
SHA256 6ac8f770c1f4d56a2bf520453cf2c86ee2b985e053013f09a7bbb1dba8c32a43
MD5 39a1fc565de541a73175479a770b3e5a
BLAKE2b-256 0093ae83d02628aeed30a77adc7fdc84fecf1b8357106b7d1e57010f95fc7e61

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rasterio-1.1.7-cp27-cp27mu-manylinux1_x86_64.whl
  • Upload date:
  • Size: 18.1 MB
  • Tags: CPython 2.7mu
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.5

File hashes

Hashes for rasterio-1.1.7-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 30d8de955728f67e2ffa55a7c7088feab0a9a94a93bc44f9566e09bd3c3232b9
MD5 203f897327cfe15c6ed43fc7641e3707
BLAKE2b-256 0252104829720c1ee61f7a3bab6f00a5d8ef33065313d39ee1b2c809ec29505c

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