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.com/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.2 works with Python versions 3.6 through 3.9, Numpy versions 1.15 and newer, and GDAL versions 2.3 through 3.2. Official binary packages for Linux and Mac OS X are available on PyPI. Unofficial binary packages for Windows are available through other channels.

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 >= 2.3. 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 (see the package metadata file):

affine
attrs
certifi
click>=4.0
cligj>=0.5
numpy
snuggs>=1.4.1
click-plugins
setuptools

[all]
hypothesis
pytest-cov>=2.2.0
matplotlib
boto3>=1.3.1
numpydoc
pytest>=2.8.2
shapely
ipython>=2.0
sphinx
packaging
ghp-import
sphinx-rtd-theme

[docs]
ghp-import
numpydoc
sphinx
sphinx-rtd-theme

[ipython]
ipython>=2.0

[plot]
matplotlib

[s3]
boto3>=1.3.1

[test]
boto3>=1.3.1
hypothesis
packaging
pytest-cov>=2.2.0
pytest>=2.8.2
shapely

Development requires 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.9+. 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, adjusting for your Python version.

$ pip install -U pip
$ pip install GDAL-3.1.4-cp39-cp39‑win_amd64.whl
$ pip install rasterio‑1.1.8-cp39-cp39-win_amd64.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-binary rasterio

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. You will also need to specify the installed gdal version through the GDAL_VERSION environment variable.

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

With pip

$ pip install --no-use-pep517 --global-option -I<path to gdal include files> -lgdal_i -L<path to gdal library> .

Note: --no-use-pep517 is required as pip currently hasn’t implemented a way for optional arguments to be passed to the build backend when using PEP 517. See here for more details.

Alternatively environment variables (e.g. INCLUDE and LINK) used by MSVC compiler can be used to point to include directories and library files.

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

This version

1.2.9

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

Uploaded Source

Built Distributions

rasterio-1.2.9-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl (19.2 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.5+ x86-64

rasterio-1.2.9-cp39-cp39-macosx_10_9_x86_64.whl (21.1 MB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

rasterio-1.2.9-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl (19.2 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.5+ x86-64

rasterio-1.2.9-cp38-cp38-macosx_10_9_x86_64.whl (21.1 MB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

rasterio-1.2.9-cp37-cp37m-manylinux1_x86_64.whl (19.3 MB view details)

Uploaded CPython 3.7m

rasterio-1.2.9-cp37-cp37m-macosx_10_9_x86_64.whl (21.1 MB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

rasterio-1.2.9-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl (19.3 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.5+ x86-64

rasterio-1.2.9-cp36-cp36m-macosx_10_9_x86_64.whl (21.2 MB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for rasterio-1.2.9.tar.gz
Algorithm Hash digest
SHA256 012a4964d8db365be4fae0af9cbeba00e683e5904d5031e8ba42ccb6040cc887
MD5 7c826cc3e9611b75fbe4d73de15be8d6
BLAKE2b-256 1f704e7a789f4988955e4c381de80923e184f912683bbe6fc4a3a00c91efdf59

See more details on using hashes here.

File details

Details for the file rasterio-1.2.9-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.2.9-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 90388fe0229c66d7e3c14d54edc654d02c984ea76d532317ca620885ffff38c7
MD5 7c526eda745cc5361c134ac785968de7
BLAKE2b-256 e4c06bf09528f2856a5c3fca3693501942542490ea590470367ecca104d1548f

See more details on using hashes here.

File details

Details for the file rasterio-1.2.9-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: rasterio-1.2.9-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 21.1 MB
  • Tags: CPython 3.9, 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/58.1.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.5

File hashes

Hashes for rasterio-1.2.9-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7d5b8010fb62d496473bfc4d9171caf04e5274a10be1c1180e10287d63af9d36
MD5 c798812664397686136de4d60958ad17
BLAKE2b-256 fa569f186550638ea1c4c177e84ac163740ab240cb6963ecd7f71d72279ba1dc

See more details on using hashes here.

File details

Details for the file rasterio-1.2.9-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.2.9-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 9b5200c1bfd6c02f37b5c98e03f12c96cb28494bd305e033fd1de2508fcb81c7
MD5 782c2c79e096e96be23433975cbfc4a6
BLAKE2b-256 211b5813c2eed6ed01910309fe44380e5a5764e9063638d6394bfcc2904d885a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rasterio-1.2.9-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 21.1 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/58.1.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.5

File hashes

Hashes for rasterio-1.2.9-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1131f088e2729d5a67dcb1fa26ab20c5964bbf655d6516da6f5921c625c9c4c8
MD5 3ac6cc357df0eb88aa2032efd31fee89
BLAKE2b-256 c0ec0883ccb126f571d842b958cf39ef3f27078ee2bff3db00df6dddb49dc178

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rasterio-1.2.9-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 19.3 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/58.1.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.5

File hashes

Hashes for rasterio-1.2.9-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 ae0b4f435607d29594b99874665ae3ab910e68af10ec30d4a6e8a70a1a91cdc0
MD5 9b7bbd690d0ddda8c92048ba891d0229
BLAKE2b-256 b2a4ea8d75de3cae90e59ee3b64631b4c48bd759702074df27bd0891dcb6dc03

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rasterio-1.2.9-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 21.1 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/58.1.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.5

File hashes

Hashes for rasterio-1.2.9-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 287e109172c7ba47fa90a85432f763597cbdfb63fe0da44ab1a15c3aeac59cbd
MD5 32f3d70a5f5bc4c74e6332b9179cf5a0
BLAKE2b-256 e956680ddd6c00fb8c1053eed8297c3cf8de1f5f2eaf0aaab79fe6e1243dd6e8

See more details on using hashes here.

File details

Details for the file rasterio-1.2.9-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.2.9-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 0d5bb3374bb3568fcc31e8f29de8da2d65b268c53d3e0a4c979437883d46b9c9
MD5 46efcd8a0203bc197e67f844b2285937
BLAKE2b-256 7e1b23f9027fdbcacf77f35e26677d4c09bd357931b19419513f2248febea49c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rasterio-1.2.9-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 21.2 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/58.1.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.5

File hashes

Hashes for rasterio-1.2.9-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 496b99443627b428612a8c3fabf2501a22a458a15390b5fdd9e83279de38f725
MD5 3aef8c996ccae0c129ebab900a21e76f
BLAKE2b-256 2ee7fca2d823793542c83520ee8d365a3dca4296a49d66a5061e8ff51ea2f1c0

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