La API de elevación proporcionada por Google utiliza dos parámetros para solicitar la altura a lo largo de una ruta: path y samples . La ruta es la lat y lng de los puntos inicial y final, y las samples son los puntos de muestra a lo largo de una ruta para los que se devolverán los datos de elevación. Entonces, la ruta se divide en un conjunto ordenado de puntos equidistantes a lo largo de la ruta, que se envían de vuelta al cliente como una matriz de lat , lng y elevation para cada punto. Esto puede ser útil para visualizar perfiles de elevación o similares.
He visto otras alternativas de código abierto para la API de Google Elevation, sin embargo, ninguna de ellas tiene una manera fácil de proporcionar un parámetro de samples , por lo que si uno quiere lograr lo mismo, simplemente tiene que "explotar" el camino de alguna manera. múltiples puntos equidistantes y envíe esta matriz como parte de la URL al back-end.
¿Hay alguna biblioteca o algoritmo que deba considerar al dividir la ruta (que generalmente es del tipo LineString / polyline) en puntos equidistantes? En general, ¿cómo debo abordar este problema?
Ejecuto Open Topo Data y GPXZ , que son alternativas abiertas y pagas (respectivamente) a la API de Google Elevation, ¡y ambas admiten rutas de muestra!
El algoritmo que utilizo se detalla en Puntos de muestreo a lo largo de una ruta de latitud y longitud , y el código de Python para hacer esto en Open Topo Data está aquí en GitHub .
Pero en general, así es como abordar este problema:
s_i :d_i de la muestra i a lo largo de la ruta es total_path_distance * i / n_samples .d_segment_start <= d_i < d_segment_end .s_i es el resultado de viajar a lo largo del segmento identificado en el paso anterior por una distancia de d_segment_start - d_iAlgunas consideraciones prácticas