BUILD_XYZ_TILES
Generates a slippy-map XYZ tile tree from a GeoTIFF raster. The input is assigned EPSG:3857 (Web Mercator) as its CRS, then passed to gdal2tiles.py which produces a directory of PNG tiles organized as {z}/{x}/{y}.png at zoom levels 1–19.
The tile directory is uploaded to MinIO as a flat recursive copy, making it directly servable by any static tile server or object-storage tile endpoint.
Typical use: serving 2D raster outputs (hillshades, color-relief maps, colored DSMs) as slippy-map tile layers in web mapping clients such as Leaflet, MapLibre GL, or OpenLayers.
Contract
| Type | BUILD_XYZ_TILES |
| Accepts | input_tif: tif |
| Produces | output_tiles: xyz_tiles |
| Params | none |
Inputs
| Slot | Type | Description |
|---|---|---|
input_tif | tif | Source GeoTIFF raster — typically the output of BUILD_HILLSHADE_DSM, BUILD_COLORED_DSM, or BUILD_COLORED_HILLSHADE_DSM |
Outputs
| Slot | Type | Description |
|---|---|---|
output_tiles | xyz_tiles | XYZ tile directory uploaded to MinIO — {z}/{x}/{y}.png structure, zoom levels 1–19 |
What it does internally
- Downloads the input TIF from MinIO
- Runs
gdal_translate -a_srs EPSG:3857 -of GTiffto assign EPSG:3857 (Web Mercator) as the explicit CRS — producingreprojected.tif - Runs
gdal2tiles.py -z 1-19 --xyz -r bilinearonreprojected.tif, generating a PNG tile tree undertiles/ - Uploads the entire
tiles/directory to MinIO recursively - Runs
gdalinfo -jsononreprojected.tifto capture raster metadata into the artifact record - Hashes all tile files with
md5sumand includes the aggregate hash in the returned artifact descriptor
Recipe usage
json
{
"id": "build_xyz_tiles",
"type": "BUILD_XYZ_TILES",
"inputs": { "input_tif": "step:build_colored_dsm.colored_dsm_tif" },
"outputs": { "output_tiles": "step:build_xyz_tiles.output_tiles" }
}A typical two-step pattern — generate a color-relief raster, then tile it:
json
"recipe": [
{
"id": "build_colored_dsm",
"type": "BUILD_COLORED_DSM",
"inputs": { "input_las": "job:input_las" },
"outputs": { "colored_dsm_tif": "step:build_colored_dsm.colored_dsm_tif" }
},
{
"id": "build_xyz_tiles",
"type": "BUILD_XYZ_TILES",
"inputs": { "input_tif": "step:build_colored_dsm.colored_dsm_tif" },
"outputs": { "output_tiles": "step:build_xyz_tiles.output_tiles" }
}
]Artifact storage path
text
artifacts/job_{id}/build_xyz_tiles/tiles/The tiles directory is uploaded recursively. Individual tiles are reachable at:
text
artifacts/job_{id}/build_xyz_tiles/tiles/{z}/{x}/{y}.pngRelated executors
BUILD_HILLSHADE_DSM— produces a hillshade GeoTIFF; common upstream input forBUILD_XYZ_TILESBUILD_COLORED_DSM— produces a color-relief GeoTIFF; common upstream input forBUILD_XYZ_TILESBUILD_COLORED_HILLSHADE_DSM— produces a colored shaded-relief GeoTIFF; common upstream input forBUILD_XYZ_TILESBUILD_CONTOURS— also produces web-ready tiles, but as vector data from a point cloud rather than a raster