Schnittstellenbeschreibung

Geo-Service

Höhen, Höhenprofile, Horizontlinien, Gebäudeumrisse, Grundstücksgrenzen, Orthofotos und Gebäudemodelle für Deutschland und Österreich. Der Dienst liefert JSON über HTTPS und rechnet auf einem eigenen Bestand aus amtlichen Laserscan- und Vermessungsdaten.

Basisadresse
https://geoservice.schnee.co.at
Anmeldung
Kopfzeile X-API-Key
Antwortformat
JSON, UTF-8
Eingabesystem
EPSG:4326 (WGS84)
Internes System
EPSG:3035
Stand dieser Seite
August 2026

AnmeldungJede Anfrage braucht einen Schlüssel

Alle Endpunkte verlangen einen API-Schlüssel. Er wird als Kopfzeile X-API-Key mitgeschickt, nicht als Abfrageparameter, damit er nicht in Protokolldateien und Verlaufslisten landet. Einen Schlüssel bekommt man vom Betreiber. Er beginnt mit gs_ und ist danach unveränderlich.

Es gibt zwei Rechtestufen. lesen erlaubt alle abfragenden Endpunkte. verwalten erlaubt zusätzlich die steuernden Endpunkte, die den Zwischenspeicher des Dienstes anfassen. Welche Stufe ein Endpunkt verlangt, steht in jeder Tabelle rechts.

Der Schlüssel ist ein Geheimnis Er gehört in eine Umgebungsvariable des aufrufenden Systems, nicht in Quelltext, nicht in ein öffentliches Repository und nicht in eine Webseite, die im Browser läuft. Ist ein Schlüssel abgeflossen, wird er gesperrt und ein neuer ausgegeben. Der Betreiber sieht je Schlüssel die Zahl der Aufrufe und den Zeitpunkt der letzten Nutzung.

Erster AufrufHöhe eines Punktes

Der kürzeste sinnvolle Aufruf fragt die Geländehöhe und die Oberflächenhöhe an einem Punkt ab. Alle Beispiele auf dieser Seite laufen so, wie sie hier stehen, sobald der eigene Schlüssel eingesetzt ist.

curl -H "X-API-Key: gs_ihrschluessel" \
  "https://geoservice.schnee.co.at/height?lat=48.0&lon=13.8"
{
  "dgm_height": 426.01,
  "dom_height": 426.02,
  "coordinate_reprojected": { "x": 4604584.3, "y": 2772450.4 },
  "quelle": {
    "namensnennung": "Datenquelle: BEV, data.bev.gv.at, CC BY 4.0",
    "quellen": [ { "herausgeber": "BEV", "lizenz": "CC-BY-4.0", "erfassungsjahr": 2022 } ]
  }
}

dgm_height ist die Geländehöhe in Metern über dem Meer, dom_height die Höhe der Oberfläche einschließlich Bewuchs und Bebauung. Liegt der Punkt außerhalb des Bestands, stehen beide Werte auf null. Das Feld quelle enthält die Namensnennung, die bei einer Weitergabe der Werte mitgeführt werden muss.

Höhen und ProfilePunktwerte, Schnitte, Umgebungsgitter

EndpunktParameterBeschreibungStufe
GET/heightlat, lon Gelände- und Oberflächenhöhe an einem Punkt.lesen
POST/profileKörper: start, end als lat und lon
resolution_m (1, 10, 100, 500)
Höhenschnitt entlang einer Linie. Antwort ist eine Liste mit distance, dgm_elevation und dom_elevation.lesen
POST/profile_altKörper: freies Objekt
resolution_m
Gleiche Aufgabe wie /profile, nimmt aber eine abweichende Schreibweise des Körpers an. Für neue Anbindungen /profile nehmen.lesen
GET/api/terrain_surroundanchor_lat, anchor_lon, step,
i_min, i_max, j_min, j_max, include_dom
Gitter der Umgebungshöhen um einen Punkt, in Schrittweiten von 10, 100 oder 500 Metern. Für Ansichten der weiteren Umgebung.lesen
GET/api/tile_meshxmin, ymin, xmax, ymax Höhengitter in voller Auflösung für einen Ausschnitt. xmin und xmax sind Längen, ymin und ymax Breiten in WGS84. Große Antwort, gepackt übertragen.lesen
GET/transformx, y, from_crs, to_crs Koordinatenumrechnung zwischen den Bezugssystemen.lesen
curl -X POST -H "X-API-Key: gs_ihrschluessel" -H "Content-Type: application/json" \
  -d '{"start": {"lat": 48.00, "lon": 13.80}, "end": {"lat": 48.01, "lon": 13.81}}' \
  "https://geoservice.schnee.co.at/profile?resolution_m=1"

HorizontVerschattung rundum

/horizon liefert für 360 Richtungen den Höhenwinkel des Horizonts, getrennt für Gelände und Oberfläche, jeweils mit der Entfernung des Hindernisses. Damit lässt sich die Verschattung eines Standorts über den Tages- und Jahresverlauf rechnen.

EndpunktParameterBeschreibungStufe
GET/horizonlat, lon, obs_height 360 Werte mit azimut, hoehenwinkel_gelaende, hoehenwinkel_oberflaeche und den zugehörigen Entfernungen. obs_height ist die Beobachterhöhe über Gelände, Standardwert 1,8 Meter.lesen
GET/preloadlat, lon, blocking Lädt die Umgebung des Punktes in den Arbeitsspeicher. Mit blocking=true kehrt der Aufruf erst zurück, wenn alle Auflösungsstufen bereitstehen.lesen
GET/preload_statuslat, lon Fortschritt eines laufenden Vorabladens.lesen
GET/horizon/cache-statskeine Kennzahlen des Arbeitsspeicherbestands.lesen
Der erste Horizont eines Gebiets dauert Für einen unbekannten Standort werden die Umgebungsdaten in mehreren Auflösungen aus der Datenbank geholt. Das kostet beim ersten Aufruf einige Sekunden, danach antwortet derselbe Bereich sofort. Wer viele Punkte in einer Gegend rechnet, ruft einmal /preload?blocking=true auf und danach /horizon. Eine Zeitgrenze von mindestens 120 Sekunden ist beim ersten Aufruf sinnvoll.

Gebäude und GrundstückeUmrisse aus eigenem Bestand

Die Umrisse kommen aus dem eigenen Bestand des Dienstes und nicht aus einer fremden Live-Abfrage. Der Ausschnitt wird als bbox in der Reihenfolge minLon, minLat, maxLon, maxLat übergeben.

EndpunktParameterBeschreibungStufe
GET/api/osm/gebaeudebbox Gebäudeumrisse aus OpenStreetMap als GeoJSON-artige Liste.lesen
GET/api/kataster/flurstueckebbox, quelle Grundstücksgrenzen im Ausschnitt. quelle schränkt auf eine Herkunft ein, zum Beispiel at-bev.lesen
GET/api/kataster/flurstuecklat, lon Das eine Grundstück, in dem der Punkt liegt.lesen
GET/api/vektor/bestandkeine Datenstand der Vektorquellen mit Zeitpunkt des letzten Imports.lesen
curl -H "X-API-Key: gs_ihrschluessel" \
  "https://geoservice.schnee.co.at/api/osm/gebaeude?bbox=13.79,47.99,13.81,48.01"

WindWindklima je Richtung

Das Windklima stammt aus dem Global Wind Atlas 4.0 und liegt für Deutschland, Österreich und die Schweiz auf einem Gitter von 0,025 Grad vor. Geliefert wird der nächste Gitterpunkt. Die Werte gelten für ebenes Gelände einheitlicher Rauigkeit und sind noch nicht der Wind am Standort.

EndpunktParameterBeschreibungStufe
GET/api/wind/klimalat, lon Häufigkeit je Richtung sowie Weibull A und k für fünf Rauigkeiten und sechs Höhen von 10 bis 250 m. Zwölf Sektoren zu 30 Grad, der erste um Nord. Außerhalb des Bestands 404.lesen
curl -H "X-API-Key: gs_ihrschluessel" \
  "https://geoservice.schnee.co.at/api/wind/klima?lat=48.06&lon=13.60"

WetterNiederschlag und Temperatur über einer Fläche

Die Werte stammen aus den Rastern der Wetterdienste mit 1 km Zellweite: GeoSphere Austria (INCA stündlich, SPARTACUS täglich), Deutscher Wetterdienst (RADOLAN und HOSTRADA stündlich, HYRAS täglich) und MeteoSchweiz (täglich). Geliefert wird das flächengewichtete Mittel über alle Rasterzellen unter dem Vieleck. Zellen ohne Wert fallen aus dem Mittel, ein Zeitschritt ohne jeden Wert steht als null. Alle Zeiten in UTC.

EndpunktParameterBeschreibungStufe
POST/api/wetter/reiheflaeche, groesse, takt, von, bis, raster flaeche ist ein GeoJSON-Polygon oder -MultiPolygon in WGS84, groesse eines von niederschlag, temperatur, temperatur_min, temperatur_max, takt eines von stunde, tag, monat. von und bis sind Tage, beide eingeschlossen. Die Antwort nennt beginn und schritt_s, die Reihe werte, dazu immer die Monatswerte mit der Zahl fehlender Schritte und das gewählte Raster. raster legt ein Raster fest, sonst gilt das mit der größten Abdeckung. Ohne Bestand 404, über 20.000 Rasterzellen 422.lesen
curl -X POST -H "X-API-Key: gs_ihrschluessel" -H "Content-Type: application/json" \
  -d '{"flaeche": {"type": "Polygon", "coordinates": [[[13.59,48.05],[13.61,48.05],[13.61,48.07],[13.59,48.07],[13.59,48.05]]]},
       "groesse": "niederschlag", "takt": "monat", "von": "2024-01-01", "bis": "2024-12-31"}' \
  "https://geoservice.schnee.co.at/api/wetter/reihe"

BewuchsLaub- oder Nadelwald

Der Laubtyp des Baumbestands stammt aus dem Copernicus Land Monitoring Service (Dominant Leaf Type 2018) und liegt für Deutschland, Österreich und die Schweiz als Raster von 10 m vor. Je Gitterpunkt wird der Wert der Rasterzelle geliefert, in der er liegt.

EndpunktParameterBeschreibungStufe
GET/api/bewuchs/waldartxmin, ymin, xmax, ymax, punkte_x, punkte_y Ausschnitt in WGS84, höchstens 50 km. Die Punkte liegen gleichmäßig zwischen den Rändern. art läuft zeilenweise von ymin nach ymax: 0 kein Wald oder unbekannt, 1 Laub, 2 Nadel. Außerhalb des Bestands 404.lesen
curl -H "X-API-Key: gs_ihrschluessel" \
  "https://geoservice.schnee.co.at/api/bewuchs/waldart?xmin=13.599&ymin=48.058&xmax=13.607&ymax=48.063&punkte_x=61&punkte_y=61"

AdressenAnschrift zu Koordinate und zurück

Eine Suche für Österreich, Deutschland und die Schweiz. Zuerst wird im amtlichen Register gesucht (Österreich, Schweiz, Nordrhein-Westfalen, Berlin, Hamburg, Thüringen), Schreibfehler werden dort unscharf erkannt. Was das Register nicht kennt, kommt aus OpenStreetMap über den eigenen Photon-Dienst des Geoservice, notfalls über Nominatim. Jeder Treffer trägt im Feld quelle seine Herkunft: amtlich oder osm.

EndpunktParameterBeschreibungStufe
GET/api/adresse/sucheq, limit, land, nur, gebiet Adressen zu einer Adresszeile, beste zuerst, mit Koordinate. limit liegt bei höchstens 50. land grenzt auf AT, CH oder DE ein. nur=amtlich schaltet OpenStreetMap ab. gebiet grenzt auf österreichische Gemeindekennziffern oder deren Anfänge ein und schaltet OpenStreetMap ebenfalls ab.lesen
GET/api/adresse/rueckwaertslat, lon, umkreis, nur Die nächste Adresse zu einer Koordinate. umkreis in Metern, 10 bis 2000. Ohne amtlichen Treffer im Umkreis antwortet OpenStreetMap, außer bei nur=amtlich.lesen
GET/api/quelle_am_ortlat, lon Die vorgeschriebene Namensnennung für Luftbild und Höhenmodell an genau dieser Stelle. Die Herausgeber wechseln an jeder Landesgrenze.lesen
curl -H "X-API-Key: gs_ihrschluessel" \
  "https://geoservice.schnee.co.at/api/adresse/suche?q=Mösl%205,%204841%20Ungenach&limit=5"

Treffer aus OpenStreetMap stehen unter der Open Database License. Wer sie anzeigt, nennt „© OpenStreetMap-Mitwirkende“.

OrthofotoLuftbilder

EndpunktParameterBeschreibungStufe
GET/tiles/{z}/{x}/{y}.pngjahr Luftbildkachel im üblichen Kachelschema von Netzkarten. Ohne jahr wird die neueste Aufnahme geliefert. Antwort ist ein Bild, kein JSON.lesen
GET/api/orthofoto/in_viewportmin_lat, max_lat, min_lon, max_lon Welche Luftbildkacheln im Ausschnitt vorliegen.lesen
GET/api/orthofoto/coveragekeine Abdeckung des Luftbildbestands als Kennzahlen.lesen
GET/api/orthofoto/debug_tileslimit, offset Kachelliste mit Umgrenzung für Prüfansichten.lesen
GET/api/orthofoto/debug_image/{kachel_id}Pfad: kachel_id Einzelne Luftbildkachel als Bild.lesen

Bestand und DatenstandWas liegt vor und wie alt ist es

Vor einer Berechnung lohnt die Frage, ob für den Ort überhaupt Daten vorliegen und aus welchem Jahr sie stammen. Maßgeblich ist das Erfassungsjahr, nicht der Zeitpunkt des Imports.

EndpunktParameterBeschreibungStufe
GET/tile_infolat, lon Angaben zur Kachel am Punkt, mit Herausgeber und Erfassungsjahr.lesen
GET/api/tiles_in_viewportmin_lat, max_lat, min_lon, max_lon, limit,
datentyp, jahr_von, jahr_bis, ohne_jahr
Kacheln im Ausschnitt, filterbar nach Datentyp und Erfassungsjahr. limit liegt bei höchstens 2000.lesen
GET/api/search_tilesquery, limit Kachelsuche nach Kennung oder Name.lesen
GET/kachelnkeine Übersicht der importierten Kacheln.lesen
GET/api/datenstand/uebersichtkeine Kennzahlen zum Datenstand des gesamten Bestands.lesen
GET/api/datenstand/rasterzellgroesse_m, datentyp Datenstand als grobes Raster, für Übersichtskarten.lesen
GET/api/datenstand/kachel/{kachel_id}Pfad: kachel_id Datenstand einer einzelnen Kachel mit Herkunft der Angaben.lesen
GET/api/quellenkeine Alle Herausgeber mit der vorgeschriebenen Namensnennung.lesen
GET/api/quelle_am_ortlat, lon Namensnennung für Luftbild und Höhenmodell an einer Stelle, siehe Adressen.lesen
GET/api/kennzahlenkeine Kennzahlen je Quelle.lesen
GET/api/regionenkeine Hinterlegte Regionen des Bestands.lesen
GET/api/tiles/resolution-statuskeine Welche Auflösungsstufen je Datentyp vollständig vorliegen.lesen
GET/api/tiles/active-jobkeine Läuft gerade eine Erzeugung von Auflösungsstufen.lesen
GET/api/tiles/generation-status/{job_id}Pfad: job_id Fortschritt einer Erzeugung.lesen

Die Endpunkte zu Lizenzen und Regionen mit den Verben POST, PUT und DELETE dienen der Pflege des Bestands und verlangen die Stufe verwalten. Sie sind für fremde Anbindungen ohne Belang.

ZwischenspeicherNur mit der Stufe verwalten

Der Dienst hält Höhendaten im Arbeitsspeicher. Diese Endpunkte greifen dort ein. Ein falscher Aufruf verlangsamt den Dienst für alle Nutzer, deshalb verlangen sie einen Schlüssel der Stufe verwalten.

EndpunktParameterBeschreibungStufe
GET/api/cache/tilesbbox_min_x, bbox_min_y,
bbox_max_x, bbox_max_y, data_type
Liest die Höhenwerte, die derzeit im Zwischenspeicher liegen.lesen
PATCH/api/cache/tilesKörper: Umgrenzung, data_type, heights Überschreibt Höhenwerte im Zwischenspeicher, etwa um ein geplantes Bauwerk in die Verschattung einzurechnen.verwalten
POST/api/cache/reload-1mKörper: Umgrenzung, data_type Holt die Originaldaten in feinster Auflösung zurück und verwirft eigene Änderungen im Ausschnitt.verwalten
POST/api/cache/preload-with-modificationsKörper: lat, lon, radius, modifications Lädt einen Bereich und wendet dabei eine Liste von Änderungen an.verwalten
DELETE/api/cache/clearlat, lon, radius Verwirft den Zwischenspeicher eines Bereichs und erzwingt damit eine Neuberechnung.verwalten
POST/api/tiles/generate-resolutionstile_type, resolution Erzeugt fehlende Auflösungsstufen. Läuft über Stunden und belastet die Datenbank stark.verwalten

FehlercodesWas die Antwort bedeutet

CodeBedeutungWas zu tun ist
200Anfrage erfolgreich. Nichts.
401Kein oder kein gültiger Schlüssel. Auch bei gesperrtem oder abgelaufenem Schlüssel. Kopfzeile X-API-Key prüfen. Bleibt es dabei, beim Betreiber nachfragen.
403Der Schlüssel ist gültig, die Rechtestufe reicht für diesen Endpunkt nicht. Einen Schlüssel der Stufe verwalten anfordern oder den abfragenden Endpunkt nehmen.
404Kein Datensatz zu dieser Kennung, oder für den Ort liegen keine Daten vor. Zuerst /tile_info aufrufen und die Abdeckung prüfen.
422Ein Parameter fehlt oder hat den falschen Typ. Die Antwort nennt das betroffene Feld. Feldnamen und Zahlenformat prüfen. Der Dezimaltrenner ist der Punkt.
500Fehler im Dienst, meist eine nicht erreichbare Datenbank. Nach kurzer Wartezeit erneut versuchen, sonst beim Betreiber melden.
504Zeitgrenze überschritten, typisch beim ersten Horizont in einem neuen Gebiet. Eigene Zeitgrenze erhöhen und vorher /preload aufrufen.

Fehlerantworten sind immer JSON und tragen das Feld detail mit einem Text in deutscher Sprache.

Grenzen und PflichtenVor der ersten Anbindung lesen

Bauplan der Schnittstelle Die maschinenlesbare Beschreibung aller Endpunkte liegt unter /openapi.json und ist dem Betreiber vorbehalten. Wer einen Klienten daraus erzeugen will, fragt die Datei beim Betreiber an.