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

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

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

Uploaded Source

Built Distributions

rasterio-1.0b3-cp36-cp36m-manylinux1_x86_64.whl (18.7 MB view details)

Uploaded CPython 3.6m

rasterio-1.0b3-cp36-cp36m-macosx_10_9_intel.macosx_10_9_x86_64.whl (23.0 MB view details)

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

rasterio-1.0b3-cp35-cp35m-manylinux1_x86_64.whl (18.5 MB view details)

Uploaded CPython 3.5m

rasterio-1.0b3-cp35-cp35m-macosx_10_9_intel.macosx_10_9_x86_64.whl (22.9 MB view details)

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

rasterio-1.0b3-cp34-cp34m-manylinux1_x86_64.whl (18.6 MB view details)

Uploaded CPython 3.4m

rasterio-1.0b3-cp34-cp34m-macosx_10_9_intel.macosx_10_9_x86_64.whl (23.0 MB view details)

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

rasterio-1.0b3-cp27-cp27mu-manylinux1_x86_64.whl (18.2 MB view details)

Uploaded CPython 2.7mu

rasterio-1.0b3-cp27-cp27m-manylinux1_x86_64.whl (18.2 MB view details)

Uploaded CPython 2.7m

rasterio-1.0b3-cp27-cp27m-macosx_10_9_x86_64.whl (23.1 MB view details)

Uploaded CPython 2.7m macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for rasterio-1.0b3.tar.gz
Algorithm Hash digest
SHA256 d1cd09ebd4e8d89a24e27208e257177d6f80c2faac40d2719cfe2516d8fac17c
MD5 8637ed45bfb3c0fc10cad46c93a7d187
BLAKE2b-256 dc388e1ee54d1544cac363f48c8c328ef49ada146ca872d6af11b033b2d30086

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rasterio-1.0b3-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 4612a237185bc8a7d142368f9edc47c96387aa6e8582196f9a808f9776eaacfc
MD5 5303d1db5e118685271e6150a79918aa
BLAKE2b-256 8a8b69893d5b6a794b83d635eda4dba71da56f9fcb0433fc2f8fd25051996905

See more details on using hashes here.

File details

Details for the file rasterio-1.0b3-cp36-cp36m-macosx_10_9_intel.macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0b3-cp36-cp36m-macosx_10_9_intel.macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8adf5b14ec2f1d7687a93556eaa87a06c0fb00a5e86ac31dc2a019c8d1f356b5
MD5 fdb945e6636a3d6ab2fbd8344bcfcac6
BLAKE2b-256 92e92c7446c45ed376bb21969829a847bfa61b698a3c80213e8f3d2fa39c7781

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rasterio-1.0b3-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 bc1ad5cb20803d92944a55060fd31ceacf21e9ea3b2f2c8a515009b90c391ed4
MD5 0f57a32a0b074ebd463df6eb99482f2c
BLAKE2b-256 fab9893c22ed9b7604f41250cb4743ce4e5215e35a21dacab760a2c8ada617af

See more details on using hashes here.

File details

Details for the file rasterio-1.0b3-cp35-cp35m-macosx_10_9_intel.macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0b3-cp35-cp35m-macosx_10_9_intel.macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 541c4d834b9df28093490e86d1b6e4f5afdc9c5461bb2537f47a0480d919bff2
MD5 ad7c4d56a4f5fd7cf547de79884a8cfa
BLAKE2b-256 1f7773ecbcd214e64f3a4df6cd0c3861c087b4b37cdb4c9a6ff07bfa99ba1eca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rasterio-1.0b3-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 90e82f16b2805f1ec2feb7395183815f13b779a9081d827e14d2062a92a04593
MD5 1620fbc5212ac28fd57b0d074d217ded
BLAKE2b-256 48cd8961b8778f0248a5f413ef8be773c04271fa0755f853a4b4bfda022ae193

See more details on using hashes here.

File details

Details for the file rasterio-1.0b3-cp34-cp34m-macosx_10_9_intel.macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0b3-cp34-cp34m-macosx_10_9_intel.macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 071ca89fad47f3592f77b09eeaf6ebb924d663549518f22921915bb7faa262c6
MD5 f2bf32b04b4cb2f2e7c157c615d9f172
BLAKE2b-256 ec0d1905f7b59c43fabb67a9233799cd616fbe8b716d00dbe79f4906bcad2711

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rasterio-1.0b3-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 20bbedc8b40689fada012883f646e48d8eb98050a35a6717684322fb6f436957
MD5 550090b1b70265d4d9a3e0fc4ae07693
BLAKE2b-256 14c7dff45d7d5cfc3bb5691de5f3e5acfb9d6bc4e65fa60b002d4e871dc0b11f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rasterio-1.0b3-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a3aa6bd713b0245792c6984441cc956fd7c19ca4ba9a1ba4800b6f604599e0b0
MD5 e655e83f4b85b3ae789367db9a426a2f
BLAKE2b-256 71703926030cc773986784725d5233447e3cb4f49da985379b0515f2068491f5

See more details on using hashes here.

File details

Details for the file rasterio-1.0b3-cp27-cp27m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for rasterio-1.0b3-cp27-cp27m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1751178990bb7efecb74f4deceb92ab0d0a21c8e94edf5d6475c318032135ffb
MD5 0379a73612021405059449240442bcf3
BLAKE2b-256 bbb1302525a28b74cd8b7674659054a06e0c1616162e357171036647fbe8c837

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