GET /v1/osm-cover/datasets — OSM-Cover-Tilesets
Discovery-Endpoint für die OSM-Bodenbedeckung als 3D-Tiles (ADR-0017): OSM-Flächen (Wiese, Wasser, Wald, Straßen, Schienen …) auf das DGM1-Gelände drapiert und als b3dm + Draco-Compressed glTF gerendert. Konsumiert direkt von Cesium, three.js (3d-tiles-renderer), Blender (3D-Tiles-Addon).
Pro BL der jüngste Snapshot. Der entscheidende Unterschied zu /v1/terrain-mesh/datasets: jedes BL liefert mehrere thematische Cluster-Tilesets statt genau einem. Die Themes (surface, transport, canopy, bei Küsten-BL zusätzlich sea) sind eigene Tilesets, die der Client als parallele Layer lädt — unabhängig rebuild- und cutover-bar.
Die Tilesets selbst werden statisch von Caddy unter tiles.lodapi.de/osm-cover/<bl>/<snapshot>/<theme>/tileset.json ausgeliefert (Reverse-Proxy auf Hetzner-Storage-Box).
Status: beta. Cover-Geometrie ist Buffer-basiert (Straßen), Veredelung via osm2streets ist Phase 2. Lizenz: ODbL (Share-Alike) — siehe Attribution.
Wann verwenden
- 3D-Visualizer, die LoD2-Gebäude + Gelände + Bodenbedeckung zusammen zeigen.
- Selektives Layern: nur
surfaceohnetransport/canopy, oder Canopy als zuschaltbarer Baum-Layer. - Three.js/Cesium-Szenen, die OSM-Kontext ohne eigenen OSM-Render-Stack brauchen.
Examples
curl
curl -s https://api.lodapi.de/v1/osm-cover/datasets \
| jq '.datasets[] | {bl: .bundesland_code, themes: [.themes[] | {name, tiles: .tile_count, url: .tileset_url}]}'
Three.js — alle Themes als parallele Tilesets
import { TilesRenderer } from "3d-tiles-renderer";
const r = await fetch("https://api.lodapi.de/v1/osm-cover/datasets");
const { datasets } = await r.json();
const be = datasets.find(d => d.bundesland_code === "be");
for (const theme of be.themes) {
const tiles = new TilesRenderer(theme.tileset_url);
tiles.setCamera(camera);
tiles.setResolutionFromRenderer(camera, renderer);
scene.add(tiles.group);
}
Cesium — Themes einzeln zuschaltbar
const r = await fetch("https://api.lodapi.de/v1/osm-cover/datasets");
const { datasets } = await r.json();
const be = datasets.find(d => d.bundesland_code === "be");
const canopy = be.themes.find(t => t.name === "canopy");
const ts = await Cesium.Cesium3DTileset.fromUrl(canopy.tileset_url);
viewer.scene.primitives.add(ts); // Baum-Layer separat ein-/ausblendbar
Parameters
Keine.
Response
200 OK · application/json — Schema #/components/schemas/OsmCoverDatasetListResponse.
{
"datasets": [
{
"bundesland_code": "be",
"snapshot_date": "2026-06-15",
"themes": [
{
"name": "surface",
"tileset_url": "https://tiles.lodapi.de/osm-cover/be/2026-06-15/surface/tileset.json",
"tile_count": 1234
},
{
"name": "transport",
"tileset_url": "https://tiles.lodapi.de/osm-cover/be/2026-06-15/transport/tileset.json",
"tile_count": 567
},
{
"name": "canopy",
"tileset_url": "https://tiles.lodapi.de/osm-cover/be/2026-06-15/canopy/tileset.json",
"tile_count": 89
}
],
"bbox": [13.0883, 52.3382, 13.7612, 52.6755],
"license": "odbl-1.0",
"attribution": "© OpenStreetMap-Mitwirkende (ODbL)",
"built_at": "2026-06-15T22:14:00Z"
}
]
}
Antwort-Header
| Header | Wert |
|---|---|
Cache-Control | public, max-age=300 |
Themes
| Theme | Inhalt |
|---|---|
surface | Flächen-Bodenbedeckung (Grün, Wasser, Urban, Plätze, Parken, Sport, Friedhof, Hecke) |
transport | Straßen, Wege, Schienen (Buffer-Geometrie) |
canopy | Baumkronen-Mesh (aus DLR-Höhenraster) |
sea | Topf-Meer (flach Z=0) — nur Küsten-BL |
Die themes-Liste ist variabel lang: Binnenland-BL liefern 3 Themes (ohne sea), Küsten-BL 4.
Stolperdrähte
- ODbL-Share-Alike: osm-cover-Daten unterliegen der Open Database License. Vor öffentlichem Einsatz Attribution + Share-Alike-Pflichten prüfen (Themis-Freigabe).
- Canopy ist best-effort: Wenn das DLR-Höhenraster für ein BL fehlt/truncated ist, kann das
canopy-Theme fehlen — der Endpoint listet dann nur die vorhandenen Themes. - Blender-3D-Tiles-Addon braucht Draco-Decoder (
KHR_draco_mesh_compression). - Cover liegt knapp über dem Terrain (
cover_base_lift_m), um Z-Fighting mit dem terrain-mesh zu vermeiden — beim gemeinsamen Rendern beide Produkte laden.
Verwandte Endpoints
GET /v1/terrain-mesh/datasets— Gelände-Mesh (ein Tileset pro BL).GET /v1/tilesets— LoD2-Buildings-3D-Tiles.