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://app.travis-ci.com/rasterio/rasterio.svg?branch=master https://coveralls.io/repos/github/mapbox/rasterio/badge.svg?branch=master https://img.shields.io/pypi/v/rasterio

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.3 works with Python versions 3.8 through 3.10, Numpy versions 1.18 and newer, and GDAL versions 3.1 through 3.4. Official binary packages for Linux and Mac OS X with most built-in format drivers plus HDF5, netCDF, and OpenJPEG2000 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 read/write windows (like extended array slices) given georeferenced coordinates.

with rasterio.open('tests/data/RGB.byte.tif') as src:
    window = src.window(*src.bounds)
    print(window)
    print(src.read(window=window).shape)

# Printed:
# Window(col_off=0.0, row_off=0.0, width=791.0000000000002, height=718.0)
# (3, 718, 791)

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 distribution that directly or indirectly provides GDAL if possible.

The rasterio wheels on PyPI include GDAL and its own dependencies.

Rasterio

GDAL

1.2.3

3.2.2

1.2.4+

3.3.0

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.

Development and Testing

See CONTRIBUTING.rst.

Documentation

See docs/.

License

See LICENSE.txt.

Authors

The rasterio project was begun at Mapbox and was transferred to the rasterio Github organization in October 2021.

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.3b3.tar.gz (403.3 kB view details)

Uploaded Source

Built Distributions

rasterio-1.3b3-cp310-cp310-win_amd64.whl (15.6 MB view details)

Uploaded CPython 3.10 Windows x86-64

rasterio-1.3b3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (20.6 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

rasterio-1.3b3-cp310-cp310-macosx_10_10_x86_64.whl (30.7 MB view details)

Uploaded CPython 3.10 macOS 10.10+ x86-64

rasterio-1.3b3-cp39-cp39-win_amd64.whl (15.6 MB view details)

Uploaded CPython 3.9 Windows x86-64

rasterio-1.3b3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (20.6 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

rasterio-1.3b3-cp39-cp39-macosx_10_10_x86_64.whl (30.7 MB view details)

Uploaded CPython 3.9 macOS 10.10+ x86-64

rasterio-1.3b3-cp38-cp38-win_amd64.whl (15.6 MB view details)

Uploaded CPython 3.8 Windows x86-64

rasterio-1.3b3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (20.7 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

rasterio-1.3b3-cp38-cp38-macosx_10_10_x86_64.whl (30.7 MB view details)

Uploaded CPython 3.8 macOS 10.10+ x86-64

File details

Details for the file rasterio-1.3b3.tar.gz.

File metadata

  • Download URL: rasterio-1.3b3.tar.gz
  • Upload date:
  • Size: 403.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.10

File hashes

Hashes for rasterio-1.3b3.tar.gz
Algorithm Hash digest
SHA256 3e9a2111e6e5cb0459fbfe4a021a8f9bdd3aa617f6efb20eb774d0b211b9eae3
MD5 79308f593997c5f82f00402b3746562a
BLAKE2b-256 8efdba97fe214d15c9f5bbac70574cc8972ccdc63ca82c4dd13ee4184cd59146

See more details on using hashes here.

File details

Details for the file rasterio-1.3b3-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: rasterio-1.3b3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 15.6 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.10

File hashes

Hashes for rasterio-1.3b3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 391a7e3777483bfbdedeb6aab6b9d3544f7568c9033df9cba5110c84f37b2fda
MD5 e502e62834202a5c464a4d293c974c58
BLAKE2b-256 cf05882a3b3178ffad6c51036b6f1de21f37bad83a0ab9d2247ebc23a7fda50f

See more details on using hashes here.

File details

Details for the file rasterio-1.3b3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: rasterio-1.3b3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 20.6 MB
  • Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.10

File hashes

Hashes for rasterio-1.3b3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 db73f2a4cbaaf28a48b2e4b657f4f0b5791eb03fa0c64639861590bd96f8971b
MD5 c5a457e5459439b766761d9c420e443a
BLAKE2b-256 291a1d1163a98a2553851892504ae180e19a2300f81defa242a16477967706e8

See more details on using hashes here.

File details

Details for the file rasterio-1.3b3-cp310-cp310-macosx_10_10_x86_64.whl.

File metadata

  • Download URL: rasterio-1.3b3-cp310-cp310-macosx_10_10_x86_64.whl
  • Upload date:
  • Size: 30.7 MB
  • Tags: CPython 3.10, macOS 10.10+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.10

File hashes

Hashes for rasterio-1.3b3-cp310-cp310-macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 f114a4dcdc37526d97a221b93e164625222f30ea20a8e427b0c504ec1d6fa0ea
MD5 b0a7eea1b98557a02a0a7fd3fb6061cd
BLAKE2b-256 aae86411516bdeb2528f11b2ac3b9f5ef608c8576480a15829b115fbcc26bfa9

See more details on using hashes here.

File details

Details for the file rasterio-1.3b3-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: rasterio-1.3b3-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 15.6 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.10

File hashes

Hashes for rasterio-1.3b3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 f51c531d9d3f76124c31a7e87b376a89187430b9df18c86a4186fa873e68f507
MD5 40004220b67770651d0da7676a73210e
BLAKE2b-256 5fce76ff4bff581f96432e24aacdad567829db9535f609568a96135ebc557798

See more details on using hashes here.

File details

Details for the file rasterio-1.3b3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: rasterio-1.3b3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 20.6 MB
  • Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.10

File hashes

Hashes for rasterio-1.3b3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 efda750dfaabb2e861433ec5ed8590645562fbcff18715c21f56c268a0afd465
MD5 ed0be0ed10b465db586d2f52c885738b
BLAKE2b-256 4635d4132456231e71195b64dafcfdbc8d77a7e322787a859989487910755cdb

See more details on using hashes here.

File details

Details for the file rasterio-1.3b3-cp39-cp39-macosx_10_10_x86_64.whl.

File metadata

  • Download URL: rasterio-1.3b3-cp39-cp39-macosx_10_10_x86_64.whl
  • Upload date:
  • Size: 30.7 MB
  • Tags: CPython 3.9, macOS 10.10+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.10

File hashes

Hashes for rasterio-1.3b3-cp39-cp39-macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 1633c55b606ba9343153dac14b71a41725d67f963cf8b2922d32b78dbbe1d5ef
MD5 282dcc39db06e28bc912d90793f4078c
BLAKE2b-256 50b93d3c740eecc827a2639f5e1e2d2740ed2240ba7bfa4e4f84685c3aefd8ff

See more details on using hashes here.

File details

Details for the file rasterio-1.3b3-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: rasterio-1.3b3-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 15.6 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.10

File hashes

Hashes for rasterio-1.3b3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 9554328d8aa1a7dcb948aca33377a246dcc8dd7ebdd5523af013956a0cc9d6f2
MD5 13d24aafa5e1c931e101b7782d38bd8f
BLAKE2b-256 c99b1ab0a29b23415e3b58eabd3c55a53c70181fd3dd3211f113bd60c1fabf2c

See more details on using hashes here.

File details

Details for the file rasterio-1.3b3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: rasterio-1.3b3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 20.7 MB
  • Tags: CPython 3.8, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.10

File hashes

Hashes for rasterio-1.3b3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c29d78eaa09a34dd479bb61095670ee18a9fbda994de0793d5f2d0dde10d7192
MD5 825c094cb4fcad75fee55c6a56a28efb
BLAKE2b-256 531f456b6c271bec8793fdb39fdcb03bbf97843e05ba70347a7a1f5b02e8e75f

See more details on using hashes here.

File details

Details for the file rasterio-1.3b3-cp38-cp38-macosx_10_10_x86_64.whl.

File metadata

  • Download URL: rasterio-1.3b3-cp38-cp38-macosx_10_10_x86_64.whl
  • Upload date:
  • Size: 30.7 MB
  • Tags: CPython 3.8, macOS 10.10+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.10

File hashes

Hashes for rasterio-1.3b3-cp38-cp38-macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 f3a2f3f19c97a9c0a3a8e2d339c23e533a4b291573a25ccb28ef06cf44cc838b
MD5 9b442f6507d4710a2c4107cc7c02d85d
BLAKE2b-256 38651924af97f97a50e27dfd9b9428fce4c76064a9862424a3956ef2d0b9630d

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