GET /v1/terrain/datasets — Terrain-Coverage-Discovery
Liefert eine Zeile pro Bundesland mit dem jüngsten DGM1-Snapshot. Pendant zu /v1/datasets für LoD2 — beantworte „welche BL sind live”, bevor du Punkt- oder Linienabfragen issuest.
Examples
curl
curl -s https://api.lodapi.de/v1/terrain/datasets | jq '.datasets[] | {bl: .bl, snap: .snapshot, count: .tile_count, lic: .license}'
Python — Coverage-Check
import httpx
covered = {d["bl"] for d in httpx.get("https://api.lodapi.de/v1/terrain/datasets").json()["datasets"]}
print(f"Terrain live in: {sorted(covered)}")
Parameters
Keine.
Response
200 OK · application/json — Schema #/components/schemas/TerrainDatasetListResponse.
{
"datasets": [
{
"bl": "be",
"license": "dl-de-zero-2.0",
"snapshot": "2025-12-18",
"format": "GeoTIFF (COG)",
"source": "convert+storage-box",
"tile_count": 297,
"crs": "EPSG:25833",
"vertical_datum": "DHHN2016",
"attribution": "© SenStadt Berlin (DL-DE/Zero 2.0)",
"coverage_pct": null
}
],
"count": 5
}
Antwort-Header
| Header | Wert |
|---|---|
Cache-Control | public, max-age=300 |
Stolperdrähte
coverage_pctist immer null in Phase-2a — wir liefern ein ehrliches null statt ausgedachte 100.0. Phase-3 (ADR-0009) wirdcoverage_polygonfür jedes Dataset berechnen.sourceunterscheidet zwischenconvert+storage-box(Lodapi-Konvertierung auf Hetzner-Storage-Box),r2-mirror(Mirror auf Cloudflare R2),pass-through(live gegen Behörden-Server).- CRS pro BL: westliche BL EPSG:25832 (UTM32N), östliche BL EPSG:25833 (UTM33N).
/v1/terrain/elevationmacht die Transformation automatisch.
Verwandte Endpoints
GET /v1/terrain/elevation— Punktabfrage.GET /v1/terrain/profile— Linienprofil.GET /v1/terrain-mesh/datasets— 3D-Tiles-Mesh-Tilesets (Phase-2-Mesh).