Определение высоты
Высота в метрах над средним уровнем моря для одной или многих точек.
GEThttps://api.mygeocode.com/v1/elevation
Параметры
| Параметр | Тип | Описание |
|---|---|---|
lat, lonобязательный* | число | Одна точка. |
locationsобязательный* | строка | *Альтернатива lat и lon: до 100 точек в виде lat,lon|lat,lon|.... Каждая точка засчитывается как один запрос. |
keyнеобязательный | строка | API-ключ, если он не передан в заголовке. |
Эндпоинт также принимает POST с телом JSON {"locations": [[lat, lon], ...]} для длинных списков, которые не поместились бы в URL.
Пример
$ curl -H "X-API-Key: YOUR_KEY" "https://api.mygeocode.com/v1/elevation?locations=36.2381,-116.8175|31.5590,35.4732"const points = [[36.2381, -116.8175], [31.5590, 35.4732]];
const url = new URL("https://api.mygeocode.com/v1/elevation");
url.searchParams.set("locations", points.map((p) => p.join(",")).join("|"));
const { results } = await (await fetch(url, { headers: { "X-API-Key": "YOUR_KEY" } })).json();
results.forEach((r) => console.log(r.elevation_m));import requests
points = [(36.2381, -116.8175), (31.5590, 35.4732)]
locations = "|".join(f"{lat},{lon}" for lat, lon in points)
r = requests.get("https://api.mygeocode.com/v1/elevation", params={"locations": locations}, headers={"X-API-Key": "YOUR_KEY"}, timeout=10)
for item in r.json()["results"]:
print(item["elevation_m"])Ответ
{
"status": "ok",
"results": [
{ "lat": 36.2381, "lon": -116.8175, "elevation_m": -82.0, "resolution_m": 463.8 },
{ "lat": 31.559, "lon": 35.4732, "elevation_m": -416.0, "resolution_m": 463.8 }
]
}Поля ответа
| Поле | Тип | Описание |
|---|---|---|
results | массив | По одной записи на точку, в порядке ввода. |
results[].elevation_m | число или null | Метры над средним уровнем моря, с одним знаком после запятой. Отрицательные значения ниже уровня моря, в том числе для морского дна в открытом океане (набор данных содержит батиметрию). null только там, где в наборе данных нет значения. |
results[].resolution_m | число | Шаг сетки набора данных в метрах: 463.8 (15 угловых секунд). |
Примечания
- Значения берутся из ближайшей ячейки сетки 15 угловых секунд (около 460 м), глобальной, для суши и морского дна. Ожидайте высоту окружающей местности, а не отметку конкретной точки: этого достаточно для профилей, водосборов, радиотрасс и проверок на здравый смысл, но слишком грубо для отдельного здания или узкого хребта. Точность по вертикали обычно в пределах нескольких метров на пологой местности и десятков метров в крутых горах.
- Над внутренними водоёмами (озёрами, водохранилищами) значение соответствует высоте поверхности воды.
- Высота не меняется. Кешируйте результаты сколько угодно долго.
- Форматы запросов Google Elevation, Bing Elevations и Open-Elevation доступны на совместимых хостах.
Тот же запрос в форматах других провайдеров
Если у вас уже есть код, написанный под одного из этих провайдеров, оставьте его: совместимый хост принимает тот же путь и те же параметры и отвечает в формате ответа этого провайдера, а за ним работает этот эндпоинт. См. как работают совместимые хосты.
| Провайдер | Хост | Путь |
|---|---|---|
| Платформа Google Maps | gapi.mygeocode.com | /maps/api/elevation/json?locations=lat,lng|lat,lng/maps/api/elevation/json?locations=enc:POLYLINE/maps/api/elevation/json?path=lat,lng|lat,lng&samples=N |
| REST-сервисы Bing Maps | bing.mygeocode.com | /REST/v1/Elevation/List?points=lat,lon,lat,lon/REST/v1/Elevation/Polyline?points=lat,lon,lat,lon&samples=N/REST/v1/Elevation/Bounds?bounds=S,W,N,E&rows=R&cols=C (GET или POST) |
| MapQuest | mapquest.mygeocode.com | /elevation/v1/profile?latLngCollection=lat,lng,lat,lng&shapeFormat=raw&unit=m |
| Open-Elevation | openelevation.mygeocode.com | /api/v1/lookup?locations=lat,lon|lat,lon/api/v1/lookup (POST, JSON body) |
Ошибки
400 invalid_request, если не задана ни точка, ни locations, если координата вне допустимого диапазона или имеет неверный формат, если точек больше 100 или если samples, rows или cols дали бы больше 100. 503 backend_unavailable, если сервис высот не отвечает; ничего не засчитывается.