Tile server

Public XYZ tile API at https://mud2dust.io. Powered by titiler on AWS Lambda + CloudFront. No signup. CORS open. Attribution required (CC-BY 4.0).

URL shape

https://mud2dust.io/cog/tiles/WebMercatorQuad/{z}/{x}/{y}.png?url=<urlencoded-cog-uri>&rescale={min,max}

The current canonical OPERA σ⁰ COG over Eastern Washington lives at s3://mud2dust-cogs-dev/sigma0/2026/05/02/eastern-wa.tif. More layers (NDVI, NDWI, LST, precip, priors, fused VWC) land in Phase 2 and will be linked here as they ship.

Quick examples

Mapbox GL JS

map.addSource('sigma0', {
  type: 'raster',
  tiles: [
    'https://mud2dust.io/cog/tiles/WebMercatorQuad/{z}/{x}/{y}.png' +
    '?url=' + encodeURIComponent('s3://mud2dust-cogs-dev/sigma0/2026/05/02/eastern-wa.tif') +
    '&rescale=0,0.5'
  ],
  tileSize: 256,
  attribution: 'Sentinel-1 RTC σ⁰ via NASA OPERA / ASF DAAC; tiles by mud2dust (CC-BY 4.0)'
});
map.addLayer({ id: 'sigma0', type: 'raster', source: 'sigma0', paint: { 'raster-opacity': 0.85 } });

MapLibre GL

Same as above — MapLibre is API-compatible with Mapbox GL.

QGIS

Layer → Add Layer → Add XYZ Layer → URL:

https://mud2dust.io/cog/tiles/WebMercatorQuad/{z}/{x}/{y}.png?url=s3%3A%2F%2Fmud2dust-cogs-dev%2Fsigma0%2F2026%2F05%2F02%2Feastern-wa.tif&rescale=0,0.5

Python (rio-tiler / pystac-client) for direct COG access

For pixel-level work skip the tile API and read the COG directly with rio-tiler:

from rio_tiler.io import COGReader
url = "s3://mud2dust-cogs-dev/sigma0/2026/05/02/eastern-wa.tif"
with COGReader(url) as cog:
    info = cog.info()
    img = cog.tile(167, 385, 10)

leafmap

import leafmap
m = leafmap.Map(center=[46.5, -119.1], zoom=8)
url = ("https://mud2dust.io/cog/tiles/WebMercatorQuad/{z}/{x}/{y}.png"
       "?url=s3%3A%2F%2Fmud2dust-cogs-dev%2Fsigma0%2F2026%2F05%2F02%2Feastern-wa.tif"
       "&rescale=0,0.5")
m.add_tile_layer(url, name="OPERA σ⁰", attribution="mud2dust")

Useful endpoints

  • /cog/info?url=… — bounds, dtype, dimensions
  • /cog/bounds?url=… — geographic bounds only
  • /cog/preview.png?url=…&rescale=… — overview image
  • /cog/tilejson.json?url=… — TileJSON 3 manifest

Caching + rate-limits

CloudFront caches tile responses for 24h by default. Tiles are immutable per (url, z, x, y, rescale). There is currently no per-IP rate limit beyond the WAF baseline that lands in P3.1.

Attribution

Reuse anything you find here. The Mapbox attribution string for σ⁰ is:

Sentinel-1 RTC σ⁰ via NASA OPERA / ASF DAAC; tiles by mud2dust (CC-BY 4.0)