Anleitung

Eine Alternative zur Google Elevation API

Die Google Elevation API ist einfach zu verwenden, aber bei grossen Mengen teuer, und ihre Bedingungen schränken ein, was Sie mit den Ergebnissen tun dürfen. Die Höhen-API von overpass.ch nimmt dieselben Anfragen und liefert dasselbe JSON; für den Wechsel ändern Sie also vor allem die URL.

Ersetzen Sie die Google-URL und den Parameter für den Schlüssel durch Ihre URL von overpass.ch. Die Parameter locations, path und samples und die Antwort bleiben gleich:
https://maps.googleapis.com/maps/api/elevation/json?locations=46.0207,7.7491&key=GOOGLE_KEY
→ https://api.overpass.ch/v1/IHR_API_SCHLÜSSEL/elevation?locations=46.0207,7.7491

Dieselbe Anfrage, dieselbe Antwort

curl 'https://api.overpass.ch/v1/IHR_API_SCHLÜSSEL/elevation?locations=46.0207,7.7491|35.95,-5.6'
{
  "status": "OK",
  "results": [
    { "elevation": 1606.3, "location": { "lat": 46.0207, "lng": 7.7491 },
      "resolution": 90, "surface": "land", "dataset": "copernicus-glo90" },
    { "elevation": -678.3, "location": { "lat": 35.95, "lng": -5.6 },
      "resolution": 460, "surface": "sea", "dataset": "gebco-2026" }
  ],
  "lookups": 2
}
Google Elevation APIoverpass.ch
locations=lat,lng|…jaja
Kodierte Polylinien (enc:…)jaja
path mit samplesjaja, und jedes Ergebnis hat seine distance vom Start
status, results[].elevation, location.lat/lng, resolutionjaja
Orte pro Anfrage512, nur GET10'000 (1'000 in Free); GET, oder POST mit JSON oder einer GPX-Datei
Routenprofil mit Aufstieg und Abstiegnein/elevation/profile
Land oder Meer in der Antwortneinsurface und dataset
FehlerHTTP 200 mit einem status wie INVALID_REQUESTHTTP-Statuscodes (400, 401, 429) mit error und message

Code, der status == "OK" prüft und results liest, funktioniert weiter. Verzweigt Ihr Code nach den Fehlerstatus von Google, prüfen Sie stattdessen den HTTP-Statuscode.

Ihren Code umstellen

import os
import requests

URL = f"https://api.overpass.ch/v1/{os.environ['OVERPASS_CH_KEY']}/elevation"

def elevations(points):              # [(lat, lng), …]
    out = []
    for i in range(0, len(points), 1000):
        r = requests.post(URL, json={"locations": points[i:i + 1000]}, timeout=30)
        r.raise_for_status()
        out += [res["elevation"] for res in r.json()["results"]]
    return out

print(elevations([(46.0207, 7.7491), (45.9763, 7.6586)]))
  • Der Schlüssel kommt in den Pfad oder in einen Header X-API-Key, statt in key=.
  • Mengen: Sie müssen nicht mehr bei 512 Orten aufteilen. Bis 1'000 passen im kostenlosen Tarif in eine Anfrage, 10'000 in den bezahlten Tarifen.
  • Im Browser: Den ElevationService der Maps JavaScript API können Sie nicht auf einen anderen Server umstellen. Rufen Sie den Endpunkt wie oben mit fetch auf, mit einem Schlüssel, den Sie im Dashboard auf Ihre eigene Domain beschränken.

Was es kostet

Google rechnet pro Anfrage mit bis zu 512 Orten ab: 5'000 Anfragen im Monat sind kostenlos, danach USD 5 pro 1'000 bis 100'000 Anfragen, darüber günstiger. overpass.ch zählt Höhenabfragen, eine pro Ort, und der kostenlose Tarif enthält 1 Million im Monat.

Orte pro MonatIn Mengen von 512 oder mehrEin Ort pro Anfrage
Googleoverpass.chGoogleoverpass.ch
1 Millionkostenlos (etwa 2'000 Anfragen)Elevation, $7 (kostenlos für nicht kommerzielle Nutzung)etwa USD 3'575Elevation, $7
10 Millionenetwa USD 73Elevation, $7etwa USD 11'500Medium, $79
50 Millionenetwa USD 465Elevation, $7etwa USD 26'700Large, $199

Listenpreise von Google für die Elevation API im Oktober 2026: 5'000 kostenlose Anfragen im Monat, dann USD 5.00 pro 1'000 bis 100'000, USD 4.00 bis 500'000, USD 3.00 bis 1 Million, USD 1.50 bis 5 Millionen und USD 0.38 darüber. Ein Ort pro Anfrage ist der typische Fall einer App, die pro Klick oder pro Person einen Punkt abfragt. Auf overpass.ch begrenzen in diesem Fall eher die Anfragen pro Minute als die Höhenabfragen: 120 pro Minute im Tarif Elevation, 600 in Medium und 1200 in Large. Preise in CHF; dieselben Beträge in EUR. Der kostenlose Tarif ist zum Testen und für private, schulische und gemeinnützige Projekte.

Wenn Sie im Monat einige hunderttausend Orte in Mengen abfragen, reicht womöglich das kostenlose Kontingent von Google. Bei einzelnen Punkten und bei grossen Mengen unterscheiden sich die Kosten.

Ergebnisse speichern und auf einer Karte zeigen

  • Google: Die Richtlinien der Elevation API besagen, dass Inhalte nicht vorab abgerufen, zwischengespeichert oder gespeichert werden sollen, und dass Ergebnisse auf einer Karte auf einer Google-Karte erscheinen müssen. Ohne Karte zeigen Sie das Google-Logo und die Quellenangabe.
  • overpass.ch: Sie dürfen die Ergebnisse speichern und auf jeder Karte zeigen, zum Beispiel auf OpenStreetMap mit Leaflet oder MapLibre. Wenn Sie sie veröffentlichen oder anzeigen, nennen Sie die Datenquellen, wie in der Dokumentation und den Nutzungsbedingungen beschrieben.

Auflösung und Genauigkeit

Die Höhen an Land stammen aus dem Modell Copernicus GLO-90, einem weltweiten Raster mit 90 m Abstand; die Meerestiefen aus dem GEBCO-Raster (etwa 460 m). Google kombiniert mehrere Quellen und ist oft feiner, vor allem in Städten und im steilen Gebirge. Mit 90-m-Daten gilt:

  • Dörfer, Täler, Strassen und hügeliges Gelände liegen meist wenige Meter daneben (Zermatt ergibt 1'606 m);
  • spitze Gipfel erscheinen zu tief: das Matterhorn mit 4'210 m statt 4'478 m;
  • Wälder und grosse Gebäude gehören zur Oberfläche.

Das passt gut für Höhenstufen, Routenprofile, das Ergänzen von Orten und Analysen über Regionen. Für Ingenieurwesen, Luftfahrt oder alles, wo wenige Meter zählen, verwenden Sie ein feineres, lokales Modell. Die Seite Höhen-API hat weitere Messungen.