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

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

Uploaded Source

Built Distributions

rasterio-1.0.24-cp37-cp37m-manylinux1_x86_64.whl (19.7 MB view details)

Uploaded CPython 3.7m

rasterio-1.0.24-cp37-cp37m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (26.6 MB view details)

Uploaded CPython 3.7m macOS 10.10+ intel macOS 10.10+ x86-64 macOS 10.6+ intel macOS 10.9+ intel macOS 10.9+ x86-64

rasterio-1.0.24-cp36-cp36m-manylinux1_x86_64.whl (19.7 MB view details)

Uploaded CPython 3.6m

rasterio-1.0.24-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (26.7 MB view details)

Uploaded CPython 3.6m macOS 10.10+ intel macOS 10.10+ x86-64 macOS 10.6+ intel macOS 10.9+ intel macOS 10.9+ x86-64

rasterio-1.0.24-cp35-cp35m-manylinux1_x86_64.whl (19.7 MB view details)

Uploaded CPython 3.5m

rasterio-1.0.24-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (26.6 MB view details)

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

rasterio-1.0.24-cp34-cp34m-manylinux1_x86_64.whl (19.6 MB view details)

Uploaded CPython 3.4m

rasterio-1.0.24-cp34-cp34m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (26.5 MB view details)

Uploaded CPython 3.4m macOS 10.10+ intel macOS 10.10+ x86-64 macOS 10.6+ intel macOS 10.9+ intel macOS 10.9+ x86-64

rasterio-1.0.24-cp27-cp27mu-manylinux1_x86_64.whl (19.6 MB view details)

Uploaded CPython 2.7mu

rasterio-1.0.24-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (26.6 MB view details)

Uploaded CPython 2.7m macOS 10.10+ intel macOS 10.10+ x86-64 macOS 10.6+ intel macOS 10.9+ intel macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: rasterio-1.0.24.tar.gz
  • Upload date:
  • Size: 1.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6

File hashes

Hashes for rasterio-1.0.24.tar.gz
Algorithm Hash digest
SHA256 4839479621045211f66868ec49625979693450bc2e476f23e7e8ac4804eaf452
MD5 c2bf11c68898bbaf55f5df291e4c9633
BLAKE2b-256 5784be5689470a73f5f8988cf44b81cb3493ebb8abbbebb69768c8fc86fccdd5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rasterio-1.0.24-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 19.7 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6

File hashes

Hashes for rasterio-1.0.24-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 2317d5f50bf37e9c987788ed5f66494b18694e9ffc876aaaf5c825898a735ea3
MD5 8b6cad235a10c6a1579f735e9fee0326
BLAKE2b-256 aa1f718e24442598cc112753c0dc188d90730af3a1564f8e22c3b67ae76bd9cd

See more details on using hashes here.

File details

Details for the file rasterio-1.0.24-cp37-cp37m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0.24-cp37-cp37m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 430d2f955bb66c7c45a2e6f2cab7916eed7a416208313d25dce4b367070ff8e0
MD5 561ce99cf2a829c4dc51973f3be51db0
BLAKE2b-256 cd7b4b2718f78f1e7b7b372dee1bd19196d8639de0456bf879509f3fc05298a1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rasterio-1.0.24-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 19.7 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6

File hashes

Hashes for rasterio-1.0.24-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 13ccfaee800eaf66bc4bd5c2e1141cbf1aebedb627fb7f61d0db9361f36aec6d
MD5 bc59c3866dca7445e550fcc56919e6e9
BLAKE2b-256 a2d6f5dc5b31b5bbb8c9cf0ae2f38a31e4406994db48f9f14d9434588c935c7c

See more details on using hashes here.

File details

Details for the file rasterio-1.0.24-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0.24-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 e43de148f8007fcc342c549cda6fb58a2dd47de156d54e9f9ef6f435e44d2207
MD5 ce543e4ce3caf32aa8ccf4bdcc63ecd8
BLAKE2b-256 9673e491fe231ee4e220bc5b30d523d7610e99c99b3c483794ae5ee600e17194

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rasterio-1.0.24-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 19.7 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6

File hashes

Hashes for rasterio-1.0.24-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 3ea7edc408bfb2c012a309499a67778be5f459cbc2aecab0c527751e074f2c9f
MD5 af1c8a5c10c3ce2963a7b40dbf2d7ab9
BLAKE2b-256 8b584ffeb42053256794c129c7faa5551062ffe934fafc58c27be28021b7d552

See more details on using hashes here.

File details

Details for the file rasterio-1.0.24-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0.24-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 fa5ebc10da794b38c8d8241df65fe39cd2cf2def9767912b87addf0b3983ae3f
MD5 418946e8660458054c9ad23805ad6b1e
BLAKE2b-256 3c3cc8cffef9908f2623192e8a8f09fd5e2e99d25f5e8ba4bb636180f1932190

See more details on using hashes here.

File details

Details for the file rasterio-1.0.24-cp34-cp34m-manylinux1_x86_64.whl.

File metadata

  • Download URL: rasterio-1.0.24-cp34-cp34m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 19.6 MB
  • Tags: CPython 3.4m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6

File hashes

Hashes for rasterio-1.0.24-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 d32a2a4cfb43a82823f520534d1708e207c41d6434edc3ba5f936635baa76431
MD5 28a944498bcccb92188f4b8ac27384e5
BLAKE2b-256 3f3d9bc39a464f23b33e04a6054a4f7bffba741a78d8ce3cf130efeb631dd889

See more details on using hashes here.

File details

Details for the file rasterio-1.0.24-cp34-cp34m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0.24-cp34-cp34m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 6ac117ce1c5f959042f7b74fa480f6dd451945ce08bac4c1946684cabe86727c
MD5 8b4a113d257efaea86f4d7639a924b14
BLAKE2b-256 685da70ea841f995c02eac935dd395a356d5cbdec92d18f8324e09f40583cf0f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rasterio-1.0.24-cp27-cp27mu-manylinux1_x86_64.whl
  • Upload date:
  • Size: 19.6 MB
  • Tags: CPython 2.7mu
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6

File hashes

Hashes for rasterio-1.0.24-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 267c07138c76fa39485d55289b3307d0c367544e5141b9b199af55425e3ebeaf
MD5 d93f7976d3208958ee82794f5a74adac
BLAKE2b-256 8c22157051a7aa4692781b151754eb9b527d31be962fee37a4d60b7558694c9f

See more details on using hashes here.

File details

Details for the file rasterio-1.0.24-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0.24-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 0c7f6cfbe1c5dfc00cb533fcf392585959bbe88ff226c36040e59ab0d10d78e1
MD5 26319aa3bc9e56dc998f66ce08a78671
BLAKE2b-256 589bbe4c3d1a2ca933c2ea56968f934266869d27144b66a75fa50360dbcbf278

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