rio-tiler
User friendly Rasterio plugin to read raster datasets.
Documentation: https://cogeotiff.github.io/rio-tiler/
Source Code: https://github.com/cogeotiff/rio-tiler
Description
rio-tiler
was initially designed to create slippy map
tiles from large raster data
sources and render these tiles dynamically on a web map. Since rio-tiler
v2.0, we added many more helper methods to read
data and metadata from any raster source supported by Rasterio/GDAL.
This includes local and remote files via HTTP, AWS S3, Google Cloud Storage,
etc.
At the low level, rio-tiler
is just a wrapper around the rasterio and GDAL libraries.
Features
-
Read any dataset supported by GDAL/Rasterio
from rio_tiler.io import Reader
with Reader("my.tif") as image:
print(image.dataset)
img = image.read()
-
User friendly tile
, part
, feature
, point
reading methods
from rio_tiler.io import Reader
with Reader("my.tif") as image:
img = image.tile(x, y, z)
img = image.part(bbox)
img = image.feature(geojson_feature)
img = image.point(lon,lat)
-
Enable property assignment (e.g nodata) on data reading
from rio_tiler.io import Reader
with Reader("my.tif") as image:
img = image.tile(x, y, z, nodata=-9999)
-
STAC support
from rio_tiler.io import STACReader
with STACReader("item.json") as stac:
print(stac.assets)
img = stac.tile(
x,
y,
z,
assets="asset1",
indexes=(1, 2, 3),
)
img = stac.tile(
x,
y,
z,
assets=("asset1", "asset2", "asset3",),
asset_indexes={"asset1": 1, "asset2": 1, "asset3": 1},
)
-
Xarray support (>=4.0)
import xarray
from rio_tiler.io import XarrayReader
ds = xarray.open_dataset(
"https://pangeo.blob.core.windows.net/pangeo-public/daymet-rio-tiler/na-wgs84.zarr/",
engine="zarr",
decode_coords="all",
consolidated=True,
)
da = ds["tmax"]
with XarrayReader(da) as dst:
print(dst.info())
img = dst.tile(1, 1, 2)
Note: The XarrayReader needs optional dependencies to be installed pip install rio-tiler["xarray"]
.
-
Non-Geo Image support (>=4.0)
from rio_tiler.io import ImageReader
with ImageReader("image.jpeg") as src:
im = src.tile(0, 0, src.maxzoom)
im = src.part((0, 100, 100, 0))
pt = src.point(0, 0)
Note: ImageReader
is also compatible with proper geo-referenced raster datasets.
-
Mosaic (merging or stacking)
from rio_tiler.io import Reader
from rio_tiler.mosaic import mosaic_reader
def reader(file, x, y, z, **kwargs):
with Reader(file) as image:
return image.tile(x, y, z, **kwargs)
img, assets = mosaic_reader(["image1.tif", "image2.tif"], reader, x, y, z)
-
Native support for multiple TileMatrixSet via morecantile
import morecantile
from rio_tiler.io import Reader
wgs84_grid = morecantile.tms.get("WorldCRS84Quad")
with Reader("my.tif", tms=wgs84_grid) as src:
img = src.tile(1, 1, 1)
Install
You can install rio-tiler
using pip
$ python -m pip install -U pip
$ python -m pip install -U rio-tiler
or install from source:
$ git clone https://github.com/cogeotiff/rio-tiler.git
$ cd rio-tiler
$ python -m pip install -U pip
$ python -m pip install -e .
Plugins
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.
Create Mapbox Vector Tiles from raster sources
Implementations
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