tileyolo

Crates.iotileyolo
lib.rstileyolo
version0.2.3
created_at2025-04-25 18:43:00.074011+00
updated_at2025-05-14 16:22:51.25909+00
descriptionA simple raster-based XYZ tile server for serving GeoTIFFs
homepage
repositoryhttps://github.com/evanjt/tileyolo
max_upload_size
id1649351
size160,061
Evan Thomas (evanjt)

documentation

README

TileYolo

Serve GeoTIFFs as an XYZ tile API with zero configuration.

Drop your TIFFs into subfolders by style and run tileyolo — it handles everything else.

Usage

Docker

Get up and running immediately! Organise a folder data with a subfolder according to the style, such as ./data/viridis, to colour them against the viridis colour palette (Read styling and folder structure for customisation options):

./data
└── viridis
    ├── world-dem.tif
    └── treescape.tif

then run:

docker run -v ./data:/app/data -p 8000:8000 ghcr.io/evanjt/evanjt/tileyolo:latest

You can then browse all of the loaded rasters by going to http://localhost:8000/map

Install

cargo install tileyolo

Or use as a library:

cargo add tileyolo

Dependencies

  • GDAL
  • Proj

Cargo

  1. cd into your data directory (parent of style subfolders).
  2. Run:
    tileyolo
    
  3. Point your XYZ-capable client (browser, QGIS, Leaflet, etc.) at:
    http://localhost:8000/tiles/{layer}/{z}/{x}/{y}
    
    • {layer} is the TIFF filename (without extension).

TileYolo will auto-detect styles (style.txt or built-in palettes), handle no-data values, and serve tiles on port 8000.

Styles & Folder Structure

Organize your GeoTIFFs into style-specific subfolders:

./data/
├── default/
│   ├── layer1.tif
│   ├── layer2.tif
│   └── style.txt    # QGIS-exported colour stops
├── viridis/
│   ├── layer3.tif
│   └── layer4.tif   # uses built-in viridis palette
└── grayscale/
    └── layer5.tif   # no style.txt → linear grayscale
  • Custom styles: Folders with a style.txt (QGIS export) use those exact colour stops.

  • Built-in palettes: Folders named viridis, magma, plasma, inferno, turbo, cubehelix_default, rainbow, spectral, or sinebow apply the corresponding gradient.

  • Grayscale fallback: Other folders without any style file render in linear grayscale.

QGIS style.txt Example

# QGIS Generated Colour Map Export File
INTERPOLATION:INTERPOLATED
0,215,25,28,255,0
100,253,174,97,255,100
200,255,255,191,255,200
300,171,221,164,255,300
400,43,131,186,255,400

See QGIS Raster Properties → Symbology → Colour Ramp for export instructions.

Sample Output

Startup example with file tree

Configuration

TileYolo has minimal options:

$ tileyolo --help
Usage: tileyolo [OPTIONS]

Options:
  --data-folder <DIR>  Path to data folder [default: /home/.../data]
  -h, --help           Print help
  -V, --version        Print version

Why TileYolo?

I needed a zero‑config, lightweight XYZ tile server for GeoTIFFs. TileYolo does just that: drag, drop, and go.

Roadmap

  • Speed up startup with caching
  • Tile caching for performance
  • S3 and COG support
  • Additional built-in palettes
  • Contributions welcome

Caveats

  • Only band 1 is served
  • Output CRS is EPSG:3857 (Web Mercator)
  • Input TIFFs must define a CRS
  • Tested on small to medium rasters; large rasters may require more resources
  • Reprojection using nearest neighbour
Commit count: 74

cargo fmt