Guías

Crea un perfil de elevación para una ruta de senderismo o ciclismo

Un perfil de elevación no es más que una lista de puntos, cada uno con una altura asociada, representada frente a la distancia a lo largo de la ruta. El endpoint de elevación te da esa altura para tantos puntos como le envíes, en una sola llamada.

Enviar la ruta

Pasa una serie de pares de latitud y longitud con el parámetro points, separados por barras verticales, con los dos valores de cada par separados por una coma.

GET /v1/elevation?points=45.8326,6.8652|45.8400,6.8700|45.8475,6.8750
{
  "status": "ok",
  "results": [
    {"lat": 45.8326, "lon": 6.8652, "elevation_m": 1035},
    {"lat": 45.8400, "lon": 6.8700, "elevation_m": 1210},
    {"lat": 45.8475, "lon": 6.8750, "elevation_m": 1390}
  ]
}

Convertir los resultados en un perfil

Cada elemento de results se corresponde con el punto que enviaste en la misma posición. Empareja elevation_m con la distancia acumulada entre puntos consecutivos, que calculas tú mismo a partir de las coordenadas, y tendrás los valores x e y de un gráfico de perfil sin ninguna consulta adicional.

Un ejemplo más corto con un cuerpo masivo

Si prefieres enviar un array estructurado en lugar del parámetro points separado por barras verticales, haz un POST de un array JSON de objetos de coordenadas a /v1/elevation, del mismo modo en que los demás endpoints aceptan cuerpos masivos.

POST /v1/elevation
Content-Type: application/json

[{"lat": 45.8326, "lon": 6.8652}, {"lat": 45.8400, "lon": 6.8700}]

En cualquier caso, el coste es el mismo, una solicitud por punto, así que elige la forma que te resulte más fácil de construir a partir de la estructura de datos que ya tienes: una cadena de consulta construida a partir de un array o un array JSON construido de la misma manera.

Elegir la separación entre puntos

Una ruta con cien puntos GPS cada pocos metros no necesita la elevación de cada uno de ellos para dibujar un perfil legible. Muestrear uno de cada veinte o cincuenta puntos a lo largo de una ruta larga, o remuestrear a intervalos de distancia uniformes, mantiene el gráfico suave y reduce el número de solicitudes, ya que cada punto del parámetro points cuenta como una solicitud.

Un error que conviene evitar

Tratar elevation_m como exacto al centímetro es pedirle a los datos más de lo que necesita un perfil de elevación. El valor es lo bastante preciso para dibujar un perfil suave y legible y para calcular un desnivel total razonable, pero dos puntos separados por un metro en terreno llano pueden devolver lecturas ligeramente distintas que no significan nada sobre el terreno real. Diseña tu gráfico y tus cálculos de desnivel para tolerar ese tipo de pequeño ruido en lugar de tratar cada fluctuación como una característica real de la ruta.

Un caso límite sobre agua o terreno sin cartografiar

Un punto que cae sobre aguas abiertas o en una zona con pocos datos de elevación puede devolver un valor bajo o plano en lugar de un error. Si tu ruta incluye un trayecto en ferri o un tramo por terreno remoto, comprueba con el propio mapa los tramos inusualmente planos de tu perfil en lugar de dar por hecho que el número siempre describe tierra firme.

Lo que cuesta

Un perfil de cien puntos son cien solicitudes, holgadamente dentro de las 2.500 solicitudes gratuitas al día incluidas con cada clave o disponibles desde una sola dirección sin clave. Aun así, una herramienta de planificación de rutas que atiende a muchos usuarios al día debería vigilar sus cabeceras de cuota, ya que los perfiles de elevación de las rutas populares se acumulan más rápido que las consultas individuales.

Los datos de elevación convierten un mapa plano en algo con lo que un senderista o un ciclista puede planificar de verdad. La lista completa de parámetros está en la página de documentación de consulta de elevación.