A bbox or a point in, what the segmentation learned out: terrain (25 m DTM), land-cover shares, realistic tree apices, structure heights, landmarks, forest loss. Austria-wide, 7 850 Katastralgemeinden, served from a pre-built index. JSON, CORS, no key.
Coverage right now: 5 743 / 7 850 complete KGs at product v2.4 (73.2 %) — complete = whole KG (no split blocks), all layers, cells served; 167 more at v2.4 awaiting cells publication (v2.4-pending — poll, not a gap). 7 850 = all Austrian Katastralgemeinden (same universe as umfeld-at). Index updated 2026-10-26T21:33:36Z; live numbers at /api/v1/status. Unprocessed areas answer 202 / 404 ready:false — processing runs around the clock.
Landscape only. Everything is keyed by bbox, point or KG code; no property-register identifiers or vector outlines are served. Clients hold their own geometry and ask us about the bbox of each feature.
GET /api/v1/landscape?bbox=15.084,47.064,15.088,47.068 GET /api/v1/landscape?lon=15.0857&lat=47.0665&radius_m=20 GET /api/v1/trees/bbox?bbox=15.08,47.06,15.09,47.07&min_height=25 GET /api/v1/cells?lon=15.0857&lat=47.0665&k=1
| Need | Call |
|---|---|
| Everything about a bbox / point | /api/v1/landscape?bbox= (alias /context) |
| Realistic tall trees | /api/v1/trees/bbox?bbox= |
| Towers, masts, wind turbines | /api/v1/landmarks/bbox?bbox= |
| Measured building heights | /api/v1/buildings/bbox?bbox= |
| Per-cell observations (H3 res 12, ~300 m²) | /api/v1/cells?bbox= · /api/v1/cells?lon=&lat=&k=1 · /api/v1/cells/{h3} |
| Whole-KG cell file (download) | /api/v1/kg/{code}/cells (format=h3b | json summary) |
| Relief grid for 2.5D | /api/v1/heightfield?bbox=&cell=50 |
| Hillshade / slope map tiles | /tiles/hillshade/{z}/{x}/{y}.png · /tiles/slope/… |
| Which KGs are processed | /api/v1/kgs?bbox= · /api/v1/kgs?limit=1000&offset=0 · /api/v1/kg/{code} |
| Coverage | /api/v1/status |
Every processed KG is also published as a grid of H3 res-12 cells
(~307 m², ~52 000 per KG). Each cell carries one 41-byte observation record — land-cover shares in nine
groups (geb bau acker gruen wald wasser verkehr alpen sonst), structure cover and count, LiDAR
heights (mean / p90 / max), tree count, tallest tree and canopy share, NDVI mean + seasonal amplitude and a
phenology class, height and ground change between ALS years, Hansen forest-loss year, terrain (elevation,
slope, aspect, roughness, TRI, TPI) and a consistency verdict against the statistical land-use layer of
umfeld-at for the same cell. On top of that: every tree apex
≥ 3 m and every segmented structure with its LiDAR height, positioned inside the cell.
Same cell ids as umfeld-at, so the two layers zip together client-side: the statistical land use
per cell lives in umfeld-at's public NE API — GET https://umfeld-at.exe.xyz/api/v1/ne
(pin + counts), /api/v1/ne/cell/{h3}, /api/v1/ne/cells?lon=&lat=&k=1,
/api/v1/ne/chunk/{h3_res9}; contract ne.md,
overview umfeld-at llm.txt. Observed here, statistical there.
GET /api/v1/cells?bbox=16.354,48.187,16.357,48.189
# cells in a box (span ≤ 0.05°, ≤ 16 384 cells)
GET /api/v1/cells?lon=16.355&lat=48.188&k=1
# the cell under a point + 1 ring
GET /api/v1/cells?bbox=…&format=columns&fields=cover,h_max
# raw quantised columns for a map heat layer
GET /api/v1/cells?bbox=…&res=10
# server-side roll-up to res 11 / 10
GET /api/v1/cells/8c1e108cc922dff
# one cell, all layers (obs + trees + structures)
GET /api/v1/cells/dict
# fields, units, code tables, limits
GET /api/v1/kg/01008/cells
# whole-KG H3B container (CC BY 4.0 product download)
GET /api/v1/landscape?bbox=…&include=cells
# per-bbox roll-up block inside /landscape
Formats json | columns | bin | csv | geojson (+ h3b for chunk and whole-KG
downloads); layers obs,trees,structures. Not processed yet → 404 {ready:false, retry_after_s};
a bbox that is only partly covered answers 200 with meta.partial:true. Readiness:
/api/v1/status → cells{kgs_ready, cells_total, epoch}. Full field layout and the binary record
specs are in the reference.
Every public layer can be flagged, tokenless: a cell whose observed cover group looks off, a giant tree that is a
mast, a structure height that cannot be, a tile artefact. Subjects are H3 res-12 cells (or a point → its cell) and
KG codes only. Repeats fold into one row; when you omit observed we snapshot what we serve for that
cell at that moment, so the flag can be judged after a rebuild. Send looks_right too.
POST /api/v1/flags {"lon": 15.0857, "lat": 47.0665, "layer": "cells.cover", "claim": "wrong_type",
"expected": {"group": "gruen"}, "note": "mown meadow", "source": "my-map"}
GET /api/v1/flags?bbox=…&format=columns # disputed cells in a viewport tile
GET /api/v1/flags/heat?res=7 # national overview for a map glyph
GET /api/v1/cells/8c1e108cc922dff?flags=1 # cell dossier with its flag tally
GET /api/v1/flags/dict # layers, claims, limits
/segmentation — draw an area, see the object segmentation (precomputed products first, live LiDAR where none exists yet), overlay DTM / ortho / CIR / forest change, export GeoPackage / KML / MBTiles, share a result. Details: llm.txt → Segmentation UI.
Full reference (plain text, for humans and LLM agents) · Licences & attribution
Datenquelle: BEV – Bundesamt für Eich- und Vermessungswesen (CC BY 4.0, bearbeitet) · Contains modified Copernicus Sentinel data 2022–2025 · © ESA WorldCover 2021 · Hansen/UMD/Google/USGS/NASA GFC · © OpenStreetMap contributors (ODbL). Derived segmentation, statistics and the cell layer © srtm-lidar-at, CC BY 4.0 (licence). Per-source obligations: /api/v1/license. Not operated by or affiliated with BEV, ESA or the Copernicus programme. Stage: alpha — field names and limits may still move between epochs.