GET /v1/terrain-mesh/datasets

3D-Tiles-Mesh-Tilesets für DGM1 (b3dm + Draco)

beta seit v0.1.0 terrain-mesh auth: none
Als Markdown anzeigen → Im Swagger-UI öffnen → operationId: list_terrain_mesh_datasets

Beispiel-Ergebnis

So sieht die Antwort aus

Blick von Südosten auf die Saarschleife als 3D-Geländemesh: Der Fluss windet sich blau durch ein tief eingeschnittenes Tal, die Hochflächen sind orange bis weiß gefärbt.
Saarschleife bei Mettlach aus dem saarländischen Terrain-Mesh-Tileset (DGM1, b3dm + Draco). Die tileset_url aus der Antwort ist direkt in Cesium geladen. Gerendert aus der echten API-Antwort, kein Mockup. Daten: © GeoBasis DE/LVGL-SL (2026), dl-de/by-2.0 (Wortlaut aus /v1/attribution (terrain-mesh, sl; dl-de-by-2.0))

Aufruf

curl https://api.lodapi.de/v1/terrain-mesh/datasets

Antwort (gekürzt, 1 von 16 Datasets)

{
  "datasets": [
    …,
    {
      "bundesland_code": "sl",
      "snapshot_date": "2026-06-01",
      "tileset_url": "https://tiles.lodapi.de/terrain-mesh/sl/2026-06-01-coarse/tileset.json",
      "tile_count": 2850,
      "rtin_tolerance_m": 0.5,
      "tiling_scheme": "single-level-spike",
      "license": "dl-de-by-2.0",
      "attribution": "© GeoBasis DE/LVGL-SL (2026), dl-de/by-2.0",
      "built_at": "2026-06-04T09:47:10.330543+00:00"
    },
    …
  ]
}

Darstellung: CesiumJS mit CustomShader: Höhenfarben 160–420 m und Schummerung von uns. Keine Überhöhung, die Facetten sind das echte Mesh.

GET /v1/terrain-mesh/datasets — Terrain-Mesh-Tilesets

Discovery-Endpoint für 3D-Tiles-1.1-Mesh-Tilesets, die das DGM1-Gelände als gerendertes Mesh ausliefern (statt als Raster-COG wie /v1/terrain/*). Format: b3dm + Draco-Compressed glTF. Konsumiert direkt von Cesium, three.js (3d-tiles-renderer), Blender (3D-Tiles-Addon).

Pro BL der jüngste Snapshot. Die Tilesets selbst werden statisch von Caddy unter tiles.lodapi.de/terrain-mesh/<bl>/<snapshot>/tileset.json ausgeliefert (Reverse-Proxy auf Hetzner-Storage-Box).

Status: beta. Phase-2a-Implementierung ist Single-Level — für große BL (NRW ~35k Tiles) lädt der Renderer alle Leaves auf einmal. Multi-Level-LoD-Pyramide ist Phase 2b.

Wann verwenden

  • 3D-Visualizer, die LoD2-Gebäude + Geländerelief gleichzeitig zeigen sollen.
  • Blender-Workflows für Architektur-Renderings mit Topographie-Kontext.
  • Three.js-Apps ohne Cesium-Terrain-Provider-Lock-in.

Für API-Punkt-Höhe ist /v1/terrain/elevation der richtige Pfad. Mesh ist Visual, Raster ist Query.

Examples

curl

curl -s https://api.lodapi.de/v1/terrain-mesh/datasets | jq '.datasets[] | {bl: .bundesland_code, url: .tileset_url, tiles: .tile_count}'

Three.js — Drop-in mit 3d-tiles-renderer

import { TilesRenderer } from "3d-tiles-renderer";

const r = await fetch("https://api.lodapi.de/v1/terrain-mesh/datasets");
const { datasets } = await r.json();
const be = datasets.find(d => d.bundesland_code === "be");
const tiles = new TilesRenderer(be.tileset_url);
tiles.setCamera(camera);
tiles.setResolutionFromRenderer(camera, renderer);
scene.add(tiles.group);

Cesium — als generisches Tileset

const r = await fetch("https://api.lodapi.de/v1/terrain-mesh/datasets");
const { datasets } = await r.json();
for (const t of datasets) {
  const ts = await Cesium.Cesium3DTileset.fromUrl(t.tileset_url);
  viewer.scene.primitives.add(ts);
}

Hinweis: Cesium konsumiert Mesh-Tilesets als generische 3D-Tiles, nicht als Terrain-Provider. Building-Clamping muss self-managed sein — bei LoD2 ist das aber egal, weil Z absolut aus dem CityGML kommt.

Parameters

Keine.

Response

200 OK · application/json — Schema #/components/schemas/TerrainMeshDatasetListResponse.

{
  "datasets": [
    {
      "bundesland_code": "be",
      "snapshot_date": "2025-12-18",
      "tileset_url": "https://tiles.lodapi.de/terrain-mesh/be/2025-12-18/tileset.json",
      "tile_count": 297,
      "rtin_tolerance_m": 0.5,
      "tiling_scheme": "single-level-quadtree",
      "license": "dl-de-zero-2.0",
      "attribution": "© SenStadt Berlin (DL-DE/Zero 2.0)",
      "built_at": "2026-05-13T22:14:00Z"
    }
  ]
}

Antwort-Header

HeaderWert
Cache-Controlpublic, max-age=300

Build-Parameter

FeldBedeutung
rtin_tolerance_mMaximal-Fehler der RTIN-Approximation (typ. 0,5 m für LoD2-Default)
tiling_schemeaktuell single-level-quadtree (Phase 2a); Phase 2b: multi-level-quadtree

Zugang

Ohne API-Key nutzbar. Die verlinkten Kacheln auf tiles.lodapi.de sind statische Dateien ohne Zugangsbeschränkung (Details im Tilesets-Endpoint).

Stolperdrähte

  • Blender-3D-Tiles-Addon braucht Draco-Decoder (KHR_draco_mesh_compression). Verifikation steht noch aus (Phase-2a-Gate).
  • Single-Level-Tilesets sind teuer bei großen BL — Renderer-Frustum-Culling lädt potentiell alle Leaves. Workaround: bbox-Filter auf der Client-Seite, bis Phase 2b live ist.
  • CRS in den Tiles: ECEF-Koordinaten (geozentrisches Erd-System) per B3dm.from_numpy_arrays-Transform. Standard für 3D-Tiles 1.1.

Verwandte Endpoints

Verwandt

  • /v1/terrain/datasets
  • /v1/tilesets

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.