GET /v1/terrain/datasets

Liste verfügbarer DGM1-Terrain-Datensätze (pro BL)

stable seit v0.1.0 terrain auth: none

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

# pip install lodapi
from lodapi import Client

with Client() as c:
    covered = {d.bl for d in c.terrain.datasets().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

HeaderWert
Cache-Controlpublic, max-age=300

Stolperdrähte

  • coverage_pct ist immer null in Phase-2a — wir liefern ein ehrliches null statt ausgedachte 100.0. Phase-3 (ADR-0009) wird coverage_polygon für jedes Dataset berechnen.
  • source unterscheidet zwischen convert+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/elevation macht die Transformation automatisch.

Verwandte Endpoints

Verwandt

  • /v1/terrain/elevation
  • /v1/terrain/profile
  • /v1/terrain-mesh/datasets

Bereit?

Der erste Call geht sofort.

LoD2-Gebäude für alle 16 Bundesländer, kostenlos und ohne Konto. Pro auf Anfrage 30 Tage testen.