API de elevación para puntos, rutas y áreas

Altitudes sobre el nivel del mar para un punto, para hasta 10 000 puntos a la vez, como perfil a lo largo de una ruta con su desnivel total, o como cuadrícula sobre un recuadro. Las teselas de terreno para mapas 3D salen de los mismos datos.

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]}
Ejemplo de solicitud

Un punto o muchos

Las altitudes están en metros. Un lote admite hasta 10 000 puntos y cuenta como una sola petición.

Perfil de elevación de una ruta

POST /v1/route/profile toma una ruta GeoJSON y la muestrea cada stepM metros (de 10 a 1000; por defecto unas 2000 muestras). El desnivel total se calcula tras suavizar las altitudes en unos 100 m, para que el ruido de un modelo de terreno no se acumule en un desnivel que no existe. En puentes y túneles las alturas siguen la carretera, no el valle de debajo ni la montaña de encima, y la respuesta enumera esos tramos; con "heights": "terrain" se obtiene el terreno bajo cada punto. Un perfil tiene como máximo 5.000 muestras, así que en rutas largas el paso crece por encima del pedido. Para un track grabado, "at": "points" da en cambio una altura en cada uno de sus propios puntos, hasta 50.000, y conserva las distancias del track. Cada puente y túnel trae su gálibo cuando OpenStreetMap lo tiene, y POST /v1/route/surfaces enumera todas las limitaciones de altura a lo largo de un track, pasos bajo puentes incluidos.

{
  "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 },
    ...
  ]
}

Es un recorrido en bici de carretera de Ginebra a Chamonix. El perfil también viene con POST /v1/route/report, junto con el tiempo a lo largo de la ruta y las zonas horarias que cruza.

Una cuadrícula sobre un área

GET /v1/area?bbox=west,south,east,north&include=elevation&cells=400 devuelve la altitud en el centro de cada celda de una cuadrícula de hasta 400 celdas, fila por fila desde la esquina noroeste, sobre la misma cuadrícula que el tiempo y la calidad del aire de esa área.

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

Teselas de terreno

Las teselas para sombreado del relieve y terreno 3D están en /v1/dem/{z}/{x}/{y}.png (256 px, codificación Terrarium, zoom 0 a 13) y .webp (512 px, zoom 0 a 12). Se cargan como imágenes normales en MapLibre y bibliotecas similares, bajo cualquier estilo de mapa base: las teselas, los estilos y las fuentes del mapa base no forman parte de la API. Cada 50 teselas cuentan como una petición, y las teselas no ocupan ninguna de tus plazas simultáneas.

Precio

El plan gratuito da 500 peticiones al día, también para aplicaciones comerciales; Developer cuesta 14,99 $ al mes por 5000 al día. Datos de mapas, tiempo, calidad del aire, niveles de ríos y rutas con la misma clave.

Créditos: terreno de Mapterhorn.

El plan gratuito incluye 500 solicitudes al día, también para apps comerciales. Crea una cuenta con Google o con tu correo y genera tus claves al instante.