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

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

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

Stolperdrähte

Verwandte Endpoints

Verwandt

Bereit?

Hol dir deinen API-Key.

1.000 Calls und 1 GB Tile-Daten kostenlos pro Monat — ohne Kreditkarte, ohne Ablaufdatum.