15 votos

¿Cómo obtener un perfil de elevación para una pista gps?

Me gustaría obtener un perfil de elevación razonablemente preciso para una pista grabada con un GPS (que a menudo tiene datos de altitud muy poco fiables y a veces ninguno, dependiendo del modelo).

¿Alguien tiene alguna pista sobre la forma más fácil de hacerlo? Las dos técnicas que estoy considerando hasta ahora son:

  • Utilizando el API de elevación de Google

    Esta API es relativamente fácil de usar, pero todavía requiere algunos pasos que no son triviales debido a sus restricciones de uso: un máximo de 512 muestras devueltas por solicitud, y el número de puntos a lo largo de la ruta está limitado (por la longitud de la URL) también.

    Espero un gpsbabel simplificar filtro para reducir la pista a un número adecuado de puntos (no tiene sentido que estén a menos de 100 metros de distancia entre sí debido a la resolución de los datos de altitud), pero entonces queda el problema de cómo mapear esta pista simplificada de nuevo en la ruta original, ya que las longitudes serán diferentes.

    O, si esto no es adecuado para la automatización, el mejor enfoque puede ser dejar que el usuario seleccione los puntos de transecto en un mapa manualmente.

  • Descargar el Datos de la Shuttle Radar Topography Mission (SRTM) y hacer la consulta localmente.

    Esto es algo en lo que no tengo experiencia, así que cualquier sugerencia sobre la viabilidad de esto es bienvenida. ¿Qué tamaño tiene el conjunto de datos? ¿Qué software de SIG se necesita, y se puede programar de forma adecuada? Preferiría no tener que escribir un algoritmo de muestreo e interpolación, que suena como un dolor . ¿Cuál es el rendimiento probable de este enfoque? (Necesito que sea bastante rápido y que se ejecute en un servidor web VPS de memoria limitada...)


Algunos detalles más para completar la respuesta de @MerseyViking sobre la descarga de datos de http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp :

Hay 72 x 24 baldosas, cada una de las cuales es un archivo zip de 20mb que se descomprime en un archivo TIF de 16 bits de 72,1mb (6001x6001 píxeles).

Son unos 120 gb, que es más de lo que puedo almacenar. Dejarlo comprimido e ignorar los océanos lo reducirá a tal vez 10 gb, que sigue siendo un poco demasiado grande. Cargar los datos a la carta reduciría drásticamente el espacio de almacenamiento necesario, pero el sitio de origen es lento (sólo estaba recibiendo 10kb/s) lo que hace que sea bastante poco práctico.

9voto

tobes Puntos 19

Para una onda sinusoidal la mejor manera es utilizar lo que se conoce como Tabla de ondas . Esto es básicamente una lista de valores discretos para pasar a un DAC para generar una forma de onda.

Utiliza más memoria de almacenamiento que la generación matemática de un seno, pero es mucho más simple y eficiente desde el punto de vista del procesamiento. Además, tiene la ventaja de que la forma de onda generada puede modificarse cambiando los datos de la tabla de ondas.

Hay muchas formas de interconectar un PIC con un DAC, y hay muchas formas de hacer un DAC tú mismo. Todo depende de la resolución que necesites para la forma de onda final, y de los rangos de frecuencia que quieras generar, y de la precisión que quieras en la salida.

5voto

(Jeffrey C. Lagarias) Lo siguiente es equivalente a RH. Sea $H_n = \sum\limits_{j=1}^n \frac{1}{j}$ sea el $n$ -número armónico. Para cada $n \ge 1$ $$\sum\limits_{d|n} d \le H_n + \exp (H_n) \log (H_n),$$ con igualdad sólo para $n = 1.$ ( Un problema elemental equivalente a la hipótesis de Riemann . Véase también la OEIS A057641).

5voto

peterorum Puntos 467

gpsvisualizer.com lo hará por ti. Creo que utiliza GPSBabel y la API de Google en segundo plano.

4voto

Symmetric Puntos 158

Los datos SRTM son fáciles de descargar para una zona determinada, he utilizado este sitio en el pasado. Los archivos no son enormes y se pueden obtener como TIFF georreferenciados. La descarga de todo el mundo puede llevar un tiempo, pero un par de mosaicos cubren un área bastante grande. El problema que puedes tener es la resolución horizontal, que es de unos 90 metros para la mayor parte del mundo, y el error vertical puede ser bastante grande, con picos y áreas de datos perdidos.

El conjunto de datos ASTER GDEM es un estudio más reciente y de mayor resolución, con una resolución horizontal de unos 30 m, pero su calidad suele ser inferior a la de los datos SRTM correspondientes.

No sé a qué resolución están los datos de elevación de Google, pero no me extrañaría que estuvieran basados en SRTM, por lo que usar la API de Google puede darte resultados similares a los de usar un proceso local.

Siguiendo con la respuesta de @underdark, si esto va a ser un simple sistema basado en la web, GRASS GIS es probablemente el camino a seguir. He utilizado r.perfil para hacer gráficos de intervisibilidad sencillos con cierto éxito, pero no estoy seguro de qué método de interpolación utiliza; posiblemente sea sólo el del vecino más cercano. Editar : Mirando el código fuente , r.profile utiliza el vecino más cercano, por lo que es posible que se produzcan algunos artefactos de escalonamiento.

Otra opción podría ser escribir un script, utilizando GDAL y NumPy que puede ser un poco más de trabajo, pero sería una buena solución personalizada.

3voto

dlinsin Puntos 5863

En primer lugar, debería especificar con qué tipo de precisión horizontal/vertical estaría satisfecho.

Pero veamos esto desde una perspectiva práctica:

  • Cada mosaico SRTM3 tiene 1200x1200 celdas Cada celda es un valor entero de dos bytes que representa la elevación en metros. Eso es alrededor de 2,75 MB de datos sin comprimir.
  • Hay 14042 fichas SRTM3. Eso es cca. 38 GB de datos en bruto.
  • ¿Realmente necesitas cubrir todo el mundo? Imagino que no hay mucho interés en mostrar el perfil de elevación de un track GPS en medio del Sáhara, el desierto de Gobi o Siberia, por lo que no es económicamente factible que lo cubras si tienes poco dinero (BTW: El SRTM3 no cubre todo el mundo Así que no hay que preocuparse por lugares como Groenlandia y la Antártida ;)).
  • Con un poco de compresión y codificación de datos inteligente se podría reducir el tamaño del conjunto de datos de forma drástica. Los valores de elevación van de 0 a 8848, por lo que los dos bits restantes no se utilizan. También podría codificar las elevaciones a través de la compresión delta para reducirlas aún más. También podría renunciar a parte de la precisión vertical (a, por ejemplo, 2m, lo que le ahorraría un bit extra para cada celda.
  • Dependiendo de los tipos de recorridos GPS que se vayan a utilizar (a pie, en bicicleta, en coche...) se deben almacenar los datos en mosaicos más pequeños (digamos 0,25x0,25 grados) como archivos en el disco o filas en una tabla de la base de datos.
  • Utiliza algún tipo de caché de memoria inteligente para las baldosas, de modo que no tengas que recargar las que se utilizan con frecuencia.
  • Calcular la elevación de las celdas es la parte fácil de todo este asunto.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X