🌐 localtileserver#

Need to visualize a rather large (gigabytes+) raster? This is for you.

Try it out below!

from localtileserver import TileClient, get_leaflet_tile_layer, examples
from ipyleaflet import Map

# Create a TileClient from a raster file
# client = TileClient('path/to/geo.tif')
client = examples.get_san_francisco()  # use example data

# Create ipyleaflet TileLayer from that server
t = get_leaflet_tile_layer(client)
# Create ipyleaflet map, add tile layer, and display
m = Map(center=client.center(), zoom=client.default_zoom)
m.add(t)
m

A Python package for serving tiles from large raster files in the Slippy Maps standard (i.e., /zoom/x/y.png) for visualization in Jupyter with ipyleaflet or folium.

Launch a demo on MyBinder MyBinder

Built on rio-tiler and FastAPI.

🌟 Highlights#

  • Launch a tile server for large geospatial images

  • View local or remote raster files with ipyleaflet or folium in Jupyter

  • Band math expressions for on-the-fly computed imagery (e.g., NDVI)

  • Per-band statistics and multiple image stretch modes

  • Multiple output formats: PNG, JPEG, WebP, GeoTIFF, NPY

  • Spatial subsetting via bounding box crops and GeoJSON masks

  • STAC item support for multi-asset catalogs

  • Xarray DataArray tile serving (NetCDF, Zarr, etc.)

  • Virtual mosaics from multiple raster files

  • View rasters with CesiumJS with the built-in web application

  • Full REST API powered by FastAPI with auto-generated OpenAPI docs

ℹ️ Overview#

The TileClient class can be used to launch a tile server in a background thread which will serve raster imagery to a viewer (see ipyleaflet and folium examples in 🚀 User Guide).

This tile server can efficiently deliver varying resolutions of your raster imagery to your viewer; it helps to have pre-tiled, Cloud Optimized GeoTIFFs (COG).

The server exposes a comprehensive REST API built on FastAPI, including support for band math expressions, per-band statistics, multiple image stretch modes, spatial subsetting, STAC catalogs, xarray DataArrays, and virtual mosaics. Interactive API docs are available at /swagger/.

There is an included, standalone web viewer leveraging CesiumJS.

🪢 Community Usage#