Rasterio plugin to create web map tiles from raster datasets.
Project description
rio-tiler
Rasterio plugin to read web map tiles from raster datasets.
Documentation: https://cogeotiff.github.io/rio-tiler/
Source Code: https://github.com/cogeotiff/rio-tiler
Install
You can install rio-tiler
using pip
$ pip install -U pip
$ pip install -U rio-tiler
or install from source:
$ git clone https://github.com/cogeotiff/rio-tiler.git
$ cd rio-tiler
$ pip install -U pip
$ pip install -e .
GDAL>=3.0 / PROJ>=6.0 performances issue
rio-tiler
is often used for dynamic tiling, where we need to perform small tasks involving cropping and reprojecting the input data. Starting with GDAL>=3.0 the project shifted to PROJ>=6, which introduced new ways to store projection metadata (using a SQLite database and/or cloud stored grids). This change introduced a performance regression as mentioned in https://mapserver.gis.umn.edu/id/development/rfc/ms-rfc-126.html:
using naively the equivalent calls proj_create_crs_to_crs() + proj_trans() would be a major performance killer, since proj_create_crs_to_crs() can take a time in the order of 100 milliseconds in the most complex situations.
We believe the issue reported in issues/346 is in fact due to :point_up:.
To get the best performances out of rio-tiler
we recommend for now to use GDAL 2.4 until a solution can be found in GDAL or in PROJ.
Note: Starting with rasterio 1.2.0, rasterio's wheels are distributed with GDAL 3.2 and thus we recommend using rasterio==1.1.8 if using the default wheels, which include GDAL 2.4.
Links:
- http://rgdal.r-forge.r-project.org/articles/PROJ6_GDAL3.html
- https://mapserver.gis.umn.edu/id/development/rfc/ms-rfc-126.html
- https://github.com/OSGeo/gdal/issues/3470
- https://github.com/OSGeo/gdal/issues/1662
Overview
rio-tiler
is a rasterio plugin that aims to ease the creation of slippy map tiles dynamically from any raster source.
from typing import Dict, List
from rio_tiler.io import COGReader
from rio_tiler.models import ImageData, Info, Metadata, ImageStatistics
with COGReader("my-tif.tif") as cog:
# get info
info: Info = cog.info()
assert info.nodata_type
assert info.band_descriptions
# get image statistics
stats: ImageStatistics = cog.stats()
assert stats.min
assert stats.max
# get metadata (info + image statistics)
meta: Metadata = cog.metadata()
assert meta.statistics
assert meta.nodata_type
assert meta.band_descriptions
# Read data for a mercator tile
img: ImageData = cog.tile(tile_x, tile_y, tile_zoom, tilesize=256)
assert img.data
assert img.mask
# Read part of a data for a given bbox (size is maxed out to 1024)
img: ImageData = cog.part([minx, miny, maxx, maxy])
# Read data for a given geojson polygon (size is maxed out to 1024)
img: ImageData = cog.feature(geojson_feature)
# Get a preview (size is maxed out to 1024)
img: ImageData = cog.preview()
# Get pixel values for a given lon/lat coordinate
values: List = cog.point(lon, lat)
Plugins
rio-tiler-pds
rio-tiler
v1 included several helpers for reading popular public datasets (e.g. Sentinel 2, Sentinel 1, Landsat 8, CBERS) from cloud providers. This functionality is now in a separate plugin, enabling easier access to more public datasets.
rio-tiler-mvt
Create Mapbox Vector Tiles from raster sources
Implementations
rio-viz
Visualize Cloud Optimized GeoTIFFs locally in the browser
titiler
A lightweight Cloud Optimized GeoTIFF dynamic tile server.
cogeo-mosaic
Create mosaics of Cloud Optimized GeoTIFF based on the mosaicJSON specification.
Contribution & Development
See CONTRIBUTING.md
Authors
The rio-tiler
project was begun at Mapbox and was transferred to the cogeotiff
Github organization in January 2019.
See AUTHORS.txt for a listing of individual contributors.
Changes
See CHANGES.md.
License
See LICENSE
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.