Anleitung

Open-Elevation und Open Topo Data: Limits und Alternativen

Open-Elevation und Open Topo Data sind Höhen-APIs mit offenem Quellcode, und beide betreiben einen öffentlichen Server, den Sie ohne Einrichtung ausprobieren können.

Beide öffentlichen Server sind für eine leichte Nutzung gedacht. Der Server von Open Topo Data erlaubt 100 Orte pro Anfrage, eine Anfrage pro Sekunde und 1'000 Anfragen pro Tag. Open-Elevation erlaubt mit einem kostenlosen Schlüssel 1'000 Koordinaten im Monat, ohne Schlüssel 500 im Monat pro IP-Adresse. Für mehr betreiben Sie einen eigenen Server oder verwenden eine gehostete API.

Open Topo Data

Open Topo Data ist ein Server für Höhendatensätze unter der MIT-Lizenz. Seine öffentliche API unter api.opentopodata.org ist kostenlos, mit diesen Limits:

  • höchstens 100 Orte pro Anfrage,
  • höchstens eine Anfrage pro Sekunde,
  • höchstens 1'000 Anfragen pro Tag.

Das sind für ein Skript, das gut bündelt, bis 100'000 Orte am Tag, für eine App aber nur 1'000 Abfragen einzelner Punkte. Die Dokumentation beschreibt die öffentliche API als zum Testen verfügbar, ohne Garantie für den Dienst; das Projekt finanziert sich über bezahltes Hosting. Es bietet viele Datensätze, von 8 m in Neuseeland bis SRTM, ASTER und EU-DEM, die Sie in der URL wählen: /v1/srtm90m?locations=….

Open-Elevation

Open-Elevation ist ein Abfrageserver unter der GPL mit einer öffentlichen API unter api.open-elevation.com. Seine aktuellen Tarife laut Website im Oktober 2026:

  • ohne Schlüssel: 500 Koordinaten im Monat pro IP-Adresse, aus SRTM-Daten mit 250 m;
  • kostenloser Schlüssel: 1'000 Koordinaten im Monat;
  • bezahlt: EUR 5.99 für 3'000, EUR 14.99 für 100'000 und EUR 59.99 für 400'000 Koordinaten im Monat, mit 90-m-Daten.

Seine Daten sind SRTM von der NASA, die die Erde zwischen 60° Nord und 56° Süd abdecken. Nordskandinavien, der grösste Teil Alaskas und die Antarktis liegen ausserhalb. Für Punkte ohne Daten lautet die Antwort Höhe 0 ohne Datensatz; prüfen Sie also das Feld dataset, bevor Sie einer Null trauen.

Ein eigener Server

Beide Projekte sind Open Source und laufen in Docker. Was es braucht:

  • Daten. Die Höhenkacheln laden Sie selbst herunter. Für ein Land brauchen SRTM- oder Copernicus-Kacheln einige Gigabyte. Unser weltweiter Bestand, Copernicus GLO-90 (26'475 Kacheln) und das GEBCO-Raster für die Ozeane, hat 54 GB.
  • Einen Server mit schnellem Speicher; Abfragen sind günstig, eine kleine Maschine bewältigt also viel Verkehr.
  • Betrieb: Updates, Überwachung, Backups, TLS und eine Zugangskontrolle, wenn er aus dem Internet erreichbar ist.

Das lohnt sich, wenn Sie einen besonderen Datensatz brauchen (Lidar mit 1 m, ein nationales Modell) oder die Abfragen in Ihrem eigenen Netz bleiben müssen. Für weltweite 90-m-Daten ist es meist mehr Aufwand, als es wert ist.

Eine gehostete Alternative mit demselben Format

Die Höhen-API von overpass.ch antwortet im Format von Open Topo Data und der Google Elevation API, weltweit an Land und im Meer:

Orte pro AnfrageAnfragen pro MinuteHöhenabfragen pro MonatPreis
Kostenloser Tarif1'000301 Millionkostenlos
Tarif Elevation10'00012050 Millionen$7 im Monat

Die Höhen an Land stammen aus Copernicus GLO-90, einem 90-m-Raster, das die ganze Erde abdeckt, mit der Antarktis und dem hohen Norden. Im Meer ist die Antwort die Tiefe aus GEBCO. Auch jeder Overpass-Tarif enthält Höhenabfragen; siehe die Preise.

Ihren Code umstellen

Von Open Topo Data

Lassen Sie den Datensatz im Pfad weg, und setzen Sie Ihren Schlüssel ein. locations (mit enc:-Polylinien) und samples funktionieren gleich, und die Antwort hat dasselbe Format:

https://api.opentopodata.org/v1/srtm90m?locations=46.0207,7.7491
→ https://api.overpass.ch/v1/IHR_API_SCHLÜSSEL/elevation?locations=46.0207,7.7491

Einen Datensatz wählen Sie nicht: An Land antwortet Copernicus, im Meer GEBCO, und dataset sagt in jedem Ergebnis, welcher. Die Höhen werden immer bilinear interpoliert, der Standard bei Open Topo Data, und fehlende Daten sind null. Eine Ausgabe als GeoJSON (format=geojson) gibt es nicht.

Von Open-Elevation

Open-Elevation verwendet latitude und longitude; hier sind die Punkte Paare [lat, lon] oder Objekte mit lat und lon, und die Ergebnisse haben location.lat und location.lng:

import requests

points = [{"latitude": 46.0207, "longitude": 7.7491}, {"latitude": 69.65, "longitude": 18.96}]

r = requests.post("https://api.overpass.ch/v1/IHR_API_SCHLÜSSEL/elevation",
                  json={"locations": [[p["latitude"], p["longitude"]] for p in points]}, timeout=30)
r.raise_for_status()
results = [{"latitude": res["location"]["lat"], "longitude": res["location"]["lng"],
            "elevation": res["elevation"]} for res in r.json()["results"]]
print(results)

Der zweite Punkt ist Tromsø auf 69,65° Nord: ausserhalb von SRTM, aber von Copernicus abgedeckt.