API wysokości dla punktów, tras i obszarów

Wysokości nad poziomem morza dla jednego punktu, dla maksymalnie 10 000 punktów naraz, jako profil wzdłuż trasy z sumą podejść albo jako siatka nad prostokątem. Kafelki terenu do map 3D pochodzą z tych samych danych.

curl "https://geo.runningcat.dev/v1/elevation?lon=6.869&lat=45.924" -H "Authorization: Bearer YOUR_KEY"
{"ele": 1036.9}

curl https://geo.runningcat.dev/v1/elevation -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" -d '{"points": [[6.869, 45.924], [6.143, 46.204]]}'
{"elevations": [1036.9, 375.1]}
Przykładowe zapytanie

Jeden punkt lub wiele

Wysokości są w metrach. Zapytanie zbiorcze przyjmuje do 10 000 punktów i liczy się jako jedno żądanie.

Profil wysokościowy trasy

POST /v1/route/profile przyjmuje trasę w GeoJSON i próbkuje ją co stepM metrów (od 10 do 1000; domyślnie około 2000 próbek). Suma podejść jest liczona po wygładzeniu wysokości na około 100 m, żeby szum modelu terenu nie dawał podejść, których nie ma. Na mostach i w tunelach wysokości biegną drogą, a nie doliną pod spodem czy górą nad tunelem, a odpowiedź wymienia te odcinki; z "heights": "terrain" dostaniesz teren pod każdym punktem. Profil ma najwyżej 5000 próbek, więc na długich trasach krok rośnie ponad zamówiony. Dla nagranego śladu "at": "points" daje zamiast tego wysokość w każdym jego własnym punkcie, do 50 000, i zachowuje dystanse śladu. Każdy most i tunel ma swoją skrajnię, jeśli OpenStreetMap ją zna, a POST /v1/route/surfaces wymienia wszystkie ograniczenia wysokości wzdłuż śladu, przejazdy pod mostami też.

{
  "routeLengthKm": 86.311, "stepM": 500,
  "ascentM": 1020, "descentM": 358, "minM": 374.5, "maxM": 1109.4,
  "profile": [
    { "km": 0,   "lon": 6.143006, "lat": 46.204,    "ele": 375.1 },
    { "km": 0.5, "lon": 6.148751, "lat": 46.202742, "ele": 374.5 },
    ...
  ]
}

To przejazd szosowy z Genewy do Chamonix. Profil przychodzi też z POST /v1/route/report, razem z pogodą wzdłuż trasy i strefami czasowymi, które trasa przecina.

Siatka nad obszarem

GET /v1/area?bbox=west,south,east,north&include=elevation&cells=400 zwraca wysokość w środku każdej komórki siatki do 400 komórek, wiersz po wierszu od północno-zachodniego rogu, na tej samej siatce co pogoda i jakość powietrza dla tego obszaru.

{ "rows": 2, "cols": 2, "lon": [6.8375, 6.9125], "lat": [45.9625, 45.8875],
  "elevation": { "values": [2145.8, 1237.3, 1426.5, 3257.8] } }

Kafelki terenu

Kafelki do cieniowania rzeźby i terenu 3D są pod /v1/dem/{z}/{x}/{y}.png (256 px, kodowanie Terrarium, zoom od 0 do 13) oraz .webp (512 px, zoom od 0 do 12). W MapLibre i podobnych bibliotekach ładują się jako zwykłe obrazy, pod dowolnym stylem mapy podkładowej: kafelki mapy podkładowej, style i fonty nie są częścią API. Każde 50 kafelków liczy się jako jedno żądanie, a kafelki nie zajmują żadnego z Twoich miejsc w limicie równoległych żądań.

Cena

Plan darmowy daje 500 żądań dziennie, także w aplikacjach komercyjnych; Developer kosztuje 14,99 USD miesięcznie za 5000 dziennie. Dane map, pogoda, jakość powietrza, poziomy rzek i routing są na tym samym kluczu.

Źródła: teren z Mapterhorn.

Plan darmowy daje 500 zapytań dziennie, także w aplikacjach komercyjnych. Załóż konto przez Google lub e-mail i od razu utwórz swoje klucze.