Elevation¶
OAM indexes the Copernicus GLO-30 Digital Surface Model so TiTiler can serve elevation from the source Cloud Optimized GeoTIFFs. The files are not copied.
Ingestion¶
glo30.py
reads Items from Earth Search, rewrites their asset HREFs, and loads them into
PgSTAC. It does not use opendata.OpenDataCatalog because that path adds OAM
imagery fields and a visual asset.
Earth Search publishes s3://copernicus-dem-30m/... HREFs. They are rewritten
to anonymous HTTPS for the raster service, while the S3 HREF is retained as an
alternate asset.
GLO-30 is a static release, so ingestion is a one-off Job. It upserts the Collection first and then all 26,450 Items; rerunning repairs a partial load. The manifests are in the k8s-infra repository.
ArgoCD applies it on the next sync; delete the Job to re-run it.
kubectl -n oam logs -f job/stac-ingest-glo30
Use --bbox MINX MINY MAXX MAXY for a smaller test ingest:
hotosm sync-glo30 --bbox 85.0 27.0 88.0 29.0
Upserts do not delete renamed or old Items. If the upstream ID scheme changes, remove the old Collection Items before reingesting.
Raster endpoints¶
Crop an area to GeoTIFF:
GET /raster/collections/cop-dem-glo-30/bbox/{minx},{miny},{maxx},{maxy}.tif
?assets=data&width={w}&height={h}&return_mask=false
The source grid is EPSG:4326 with 1/3600-degree pixels. Snap the bbox and output
dimensions to that grid to avoid resampling. return_mask=false omits the
otherwise-added alpha band.
Serve Terrarium tiles for a MapLibre raster-dem source:
GET /raster/collections/cop-dem-glo-30/tiles/WebMercatorQuad/{z}/{x}/{y}.png
?assets=data&algorithm=terrarium
Caveats¶
- Ocean pixels are
0, not nodata. - A cold multi-tile crop can hit PgSTAC's search
time_limit. - Availability depends on the public Copernicus AWS bucket.