Höhenprofile
🏔️ Höhenprofile
Ein Höhenprofil gibt die Höhenentwicklung entlang einer Strecke an – es zeigt also, wie sich die Höhe über dem Meeresspiegel verändert, während man sich entlang gegebener Koordinaten bewegt. Dies ist essenziell für:
- Outdoor-Navigation (Wandern, Radfahren, Trailrunning)
- Planung von Infrastruktur (Trassen, Leitungen, Wege)
- Analyse von Routen in der Geoinformation und Umweltplanung
- Energiebedarfsschätzung (z. B. bei Elektrofahrzeugen)
⚙️ Wie funktioniert der Endpunkt technisch?
Die API interpoliert Höhenwerte auf Basis von Höhenrastern. Du gibst eine Sequenz von Koordinaten an, und die API berechnet entlang dieser Strecke Punkte in einem frei wählbaren Abstand (stepSize) – zwischen diesen Punkten wird jeweils ein Höhenwert ermittelt.
- Du musst mindestens zwei Koordinatenpunkte angeben (
coordinates). - Optional kannst du bestimmen, wie oft entlang dieser Linie abgetastet wird (
stepSize). - Die API berechnet aus diesen Parametern ein Stützprofil.
- Die Ausgabe kann entweder lesbar (
object) oder kompakt (array) erfolgen.
🧾 Parameterdetails
| Parameter | Typ | Pflicht? | Beschreibung |
|---|---|---|---|
| coordinates | [number, number][] | ✅ Ja | Liste von GPS-Punkten (jeweils [Längengrad, Breitengrad]) |
| stepSize | number | ❌ Nein | Optionaler Abstand in Metern zwischen zwei berechneten Stützpunkten |
| format | string | ❌ Nein | Antwortformat: object (Default) oder array |
| scaleX | string | ❌ Nein | Einheit für horizontale Entfernung (z. B. m, km) |
| scaleY | string | ❌ Nein | Einheit für die Höhe (z. B. m) |
🔍 Beispiel-Request (POST)
{ "coordinates": [ [9.802584, 47.150712], [9.802617, 47.15066] ], "stepSize": 5, "format": "object", "scaleX": "m", "scaleY": "m"}Hier werden zwischen zwei Koordinaten Punkte in 5-Meter-Schritten interpoliert. Das Höhenprofil enthält dann die geschätzten Höhen für jeden Zwischenpunkt.
🧠 Was bedeutet „stepSize“ wirklich?
stepSize beeinflusst, wie fein die Strecke aufgeteilt wird. Beispiel:
- Strecke: 150 m
- stepSize: 5 → ergibt ca. 30 Punkte
- stepSize: 50 → ergibt ca. 3 Punkte
Eine kleine Schrittweite ergibt eine detailliertere Kurve, erzeugt aber auch mehr Datenvolumen. In Anwendungen mit mobilen Clients kann es sinnvoll sein, eine Balance zwischen Genauigkeit und Ladezeit zu finden.
📈 Antwort: Höhenprofil als Datenliste
Einträge in der Antwortstruktur sehen so aus:
{ "x": 12.5, "y": 588, "coordinates": [9.80261, 47.15067]}Die Einheiten hängen direkt von den Parametern scaleX und scaleY ab.
⏱️ Performance-Tipp
Ein Höhenprofil mit hoher stepSize (z. B. 1 m) über lange Strecken (>10 km) kann sehr große Datenmengen erzeugen. Beispiel:
- 10.000 m / 1 m = 10.000 Datenpunkte
Das kann zu langen Ladezeiten oder Speicherproblemen führen. Überlege, ob du die Schrittweite an den Maßstab der Anwendung anpassen kannst (z. B. 10 m für Vorschau, 2 m für Detailansicht).
🧩 Filterlogik & Kombination mit anderen Endpunkten
Höhenprofile können auch mit zusätzlichen Inhalten kombiniert werden – etwa zur Visualisierung von Attributen entlang eines Profils (z. B. Bodenart, Wegbeschaffenheit). Die Filterstruktur aus der allgemeinen API-Spezifikation lässt sich hier allerdings nur bedingt anwenden, da /ds/höhenprofil primär Koordinaten verarbeitet – nicht IDs oder Klassifikationen.
Aber: Du könntest ein Höhenprofil anreichern, indem du für die Koordinaten vorher ein passendes filter-Query aus einer Content-Suche erzeugst:
{ "filter": { "geo": { "in": { "perimeter": [9.8, 47.15, 1000] } } }}Ergebnis: Inhalte im Umkreis von 1 km, kombiniert mit dem Höhenprofil entlang der Strecke.
Wichtig zu wissen
Höhenprofile gibt es nur, wenn für die Route auch wirklich Höhen-Daten gespeichert sind. Sonst bekommst du eine Fehlermeldung. Wenn du Fragen hast, frag dein Team oder probiere es mit einer anderen Route!
✅ Zusammengefasst
- Du kannst für jede Route das Höhenprofil abfragen – wenn Höhen-Daten vorhanden sind.
- Du bekommst eine Liste von Punkten: Wie weit, wie hoch, wo genau.
- Du kannst das Format wählen: als Objekt (Standard) oder als Array.
- Wenn keine Daten da sind, bekommst du eine klare Fehlermeldung.
So kannst du ganz einfach sehen, wie anstrengend oder spannend eine Route ist – und bist immer gut vorbereitet!