underchemist / rio-tiler

Rasterio plugin to create web map tiles from raster datasets.

Home Page:https://cogeotiff.github.io/rio-tiler/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

rio-tiler

rio-tiler

Rasterio plugin to read web map tiles from raster datasets.

Test Coverage Package version Conda Forge Downloads Downloads Binder


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

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:

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

Visualize Cloud Optimized GeoTIFFs locally in the browser

A lightweight Cloud Optimized GeoTIFF dynamic tile server.

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

About

Rasterio plugin to create web map tiles from raster datasets.

https://cogeotiff.github.io/rio-tiler/

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Python 100.0%