Guias

Crie um perfil de altitude para uma rota de caminhada ou de ciclismo

Um perfil de altitude é apenas uma lista de pontos com uma altura associada a cada um, plotada em relação à distância ao longo da rota. O endpoint de altitude fornece essa altura para quantos pontos você enviar, em uma única chamada.

Enviando a rota

Passe uma série de pares de latitude e longitude no parâmetro points, separados por barras verticais, com os valores de cada par separados por vírgula.

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}
  ]
}

Transformando os resultados em um perfil

Cada item em results corresponde ao ponto que você enviou na mesma posição. Combine elevation_m com a distância acumulada entre pontos consecutivos, que você mesmo calcula a partir das coordenadas, e você terá os valores x e y para um gráfico de perfil sem nenhuma consulta adicional.

Um exemplo mais curto usando um corpo em lote

Se você preferir enviar um array estruturado em vez do parâmetro points separado por barras verticais, faça um POST de um array JSON de objetos de coordenadas para /v1/elevation, da mesma forma que os outros endpoints aceitam corpos em lote.

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

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

De qualquer forma, o custo é o mesmo, uma requisição por ponto; então escolha o formato mais fácil de montar a partir da estrutura de dados que você já tem, uma query string montada a partir de um array ou um array JSON montado da mesma forma.

Escolhendo o espaçamento dos pontos

Uma rota com cem pontos de GPS a cada poucos metros não precisa de altitude em cada um deles para desenhar um perfil legível. Amostrar um a cada vinte ou cinquenta pontos ao longo de uma rota longa, ou reamostrar em intervalos de distância iguais, mantém o gráfico suave e reduz a contagem de requisições, já que cada ponto no parâmetro points conta como uma requisição.

Um erro que vale a pena evitar

Tratar elevation_m como preciso até o centímetro é exigir dos dados mais do que um perfil de altitude precisa. O valor é preciso o suficiente para desenhar um perfil suave e legível e para calcular um ganho total sensato, mas dois pontos a um metro de distância em terreno plano podem retornar leituras ligeiramente diferentes que não dizem nada sobre o terreno real. Construa o seu gráfico e os seus cálculos de ganho para tolerar esse tipo de pequeno ruído, em vez de tratar cada oscilação como uma característica real da rota.

Um caso extremo sobre a água ou em terreno não mapeado

Um ponto que cai sobre mar aberto ou em uma área com poucos dados de altitude pode retornar um valor baixo ou plano em vez de um erro. Se a sua rota inclui uma travessia de balsa ou um trecho por terreno remoto, confira trechos incomumente planos do seu perfil com o próprio mapa, em vez de presumir que o número sempre descreve terra firme.

Quanto custa

Um perfil de cem pontos são cem requisições, bem dentro das 2.500 requisições gratuitas por dia incluídas em toda chave, ou disponíveis a partir de um único endereço sem chave. Uma ferramenta de planejamento de rotas que atende muitos usuários por dia ainda deve ficar de olho nos cabeçalhos de cota, já que perfis de altitude de rotas populares se acumulam mais rápido do que consultas individuais.

Dados de altitude transformam um mapa plano em algo que um caminhante ou ciclista pode realmente usar para planejar. A lista completa de parâmetros está na página da documentação de consulta de altitude.