¿Existe una buena biblioteca de análisis de rastreo GPS?


35

Sigo escribiendo códigos personalizados para trabajar con pistas GPS: archivos GPX y registros NMEA desde mi teléfono, registrador GPS dedicado, etc. Siento que estoy reinventando la rueda y me pregunto si hay alguna biblioteca / herramienta estándar que pueda usar para trabajar con pistas de GPS. Algunas de las cosas que me gusta hacer:

  • Calcular la distancia recorrida en la pista
  • Calcule la velocidad promedio y las velocidades instantáneas a lo largo de la pista
  • Calcular el tiempo en movimiento frente al tiempo estacionario
  • Simplifique la pista, elimine segmentos estacionarios
  • Segmente una pista en pistas separadas, una por viaje
  • Alisar el error de muestreo de GPS
  • Cree un perfil de elevación buscando puntos en un DEM
  • Convierta las pistas a GPX, KML, etc. para visualización

Hay una variedad de aplicaciones que analizan las pistas de GPS. Estoy buscando una biblioteca de software o un conjunto de herramientas programables para poder escribir mis propias aplicaciones. No me importan mucho los formatos de entrada; cualquier tipo de puntos lat / lon con marca de tiempo está bien. Principalmente trabajo en Python en Unix, pero casi cualquier lenguaje servirá.

Las herramientas existentes que uso incluyen GPSBabel y GDAL / OGR para la conversión y PostGIS para trabajar con la geometría de la pista como una cadena de línea. Pero sobre todo termino escribiendo mi propio código de Python que funciona en matrices de pares lat / lon y eso se siente demasiado bajo. Además, algunas de las tareas anteriores (como eliminar el error de GPS) son bastante sutiles. ¿Hay alguna biblioteca existente por ahí que debería estar usando?


1
Después de una semana o dos y una recompensa, creo que la respuesta a mi pregunta aquí es "no, no hay una biblioteca para el procesamiento de pistas GPX". Muchas aplicaciones y código, pero ninguna herramienta de uso general. Es útil saber eso. Para mí, el camino a seguir es escribir un código PostGIS que funcione con el esquema creado por la importación GPX de ogr2ogr. Ese esquema contiene una LineString simple para la pista y una tabla de puntos con marcas de tiempo para la dimensión de tiempo.
Nelson

¿El código Delphi también es una opción?

Google acaba de anunciar una API de Tracks que menciono aquí para completar. Parece útil pero en una dirección diferente a la que estoy buscando; Más sobre migas de pan y geofences.
Nelson

1
@Nelson Eche un vistazo a esta respuesta, de uno de los creadores de (bastante excelente editor de viajes en línea) Ride With GPS: stackoverflow.com/a/13084082/401828
heltonbiker

@ Nelson Esta pregunta todavía es muy actual para mí, casi 4 años después. ¿Has encontrado una buena solución mientras tanto?
amball

Respuestas:


7

Bueno, depende un poco del lenguaje de programación que elija, pero he desarrollado mineturer.org en Java (el sitio es esencialmente un sitio para cargar, analizar y mostrar datos GPX).

Iv'e usó JAX-B (http://jaxb.java.net/) para leer archivos GPX (basados ​​en el esquema GPX) y JTS (http://www.vividsolutions.com/jts/) + código propio para analizando

El código fuente de mineturer.org está disponible bajo una licencia MIT en https://bitbucket.org/atlefren/gpsorganizer/

¿Supongo que el código podría darte algunos consejos al menos?


¡Gracias! Su sitio se ve muy bien (y es bastante útil a través de Google Translate, incluso si no lee noruego). Estás haciendo exactamente el tipo de análisis que quiero y es una gran ayuda que hayas abierto. Para Python, probablemente usaría GEOS en lugar de JTS; Hay enlaces decentes.
Nelson

2
si te gusta ... ¡vota!
Stev_k

1
Solo un seguimiento aquí: comencé a portar este proyecto a Python, usando Shapely y GeoAlchemy (y Flask), funciona pero es bastante lento en este momento. Código en github.com/atlefren/mineturer2 para los curiosos
atlefren

3

Escribí una matemática C # -lib para manejo de GPS con objetivos matemáticos 2d / 3d: lectura de GPX y TCX, filtrado y simplificación de pistas, agrupación de pistas / segmentos y transformación a plano 2d.

https://www.nuget.org/packages/Math.Matthey/

https://www.nuget.org/packages/Math.Matthey.Tools.TrackReaders/


¿Es posible obtener alguna descripción o documentación para esos Nugets?
Petr Krampl

Veré si puedo agregar un archivo Readme.MD al paquete NuGet.
tma

Gracias, el repositorio no es accesible. ¿Es posible analizar también los archivos gpx que contienen elementos <rte>y <rtept>, además de los <trk>elementos?
Petr Krampl

1
Por el momento solo es compatible con trrk-> trkseg-> trkpt con extensiones de puntos de seguimiento de Garmin, pero agregué rte-> rtept en 2.3.0, pero hasta ahora no hay validación.
tma

1
Se agregó documentación para ambos paquetes en nuget.org.
tma

2

El kit de herramientas GPS debería ayudar. Es una biblioteca de código abierto y un conjunto de aplicaciones que tiene como objetivo liberar a los investigadores de la codificación de nivel inferior.

Proporciona la siguiente funcionalidad:

  • Utilidades RINEX
  • Posicionamiento
  • Análisis residual
  • Modelado ionosférico
  • Simulación de seguimiento de señal T
  • Transformaciones básicas
  • Recopilación de datos de observación y conversión
  • Comparación y validación de archivos.
  • Edición de datos
  • Posicionamiento autónomo y relativo.

¡Gracias por la respuesta! GPSTk se ve fascinante pero está en un nivel más bajo de lo que estoy buscando. Parece que se trata de trabajar con señales de radio GPS sin procesar y derivar soluciones de ubicación de ellas. Ya tengo correcciones de ubicación del hardware de GPS de mi consumidor y no tengo acceso a los datos satelitales de bajo nivel.
Nelson


0

Excelente pregunta! Últimamente he estado trabajando bastante con datos GPX y la solución más simple que he encontrado ha sido convertir sus puntos de seguimiento en un formato de base de datos espacial y luego crear vistas (espaciales y tabulares) para resumir los datos según sea necesario. No pude obtener los resultados necesarios usando OGR para importar mis datos GPX, así que terminé usando un simple script de Python para atravesar la estructura de árbol XML de GPX y cargarlo en la base de datos (SpatiaLite en mi caso). Esto definitivamente no lo ayuda a evitar reinventar la rueda, sin embargo, descubrí que pude obtener los resultados deseados de resumir pistas por viaje utilizando SQL existente y funciones espaciales de SQL.


1
El principal inconveniente que he visto al usar PostGIS LineStrings es que no contienen datos de marca de tiempo. Ciertamente puedo rastrearlos yo mismo en un esquema separado, pero luego PostGIS no está haciendo nada para ayudarme a hacer cálculos basados ​​en el tiempo. ¿Tienes algún truco para eso?
Nelson

0

Estoy desarrollando este pequeño soft para mi propio uso. Es principalmente para visualización y no es compatible con todas sus necesidades, ¡pero tal vez pueda ayudar!


¡Gracias! Es de código abierto y en Java, por lo que definitivamente es una ayuda.
Nelson

0

a riesgo de no responder su pregunta real :-), permítame sugerirle una gran aplicación de la que quizás no haya oído hablar, que hace todo lo que enumeró:

es mi ventanilla única para ver, editar y transferir GPX, entre otras cosas.

Y quizás más sobre el tema, quizás revise el espacio de nombres de Posicionamiento de dotSpatial (.NET): http://dotspatial.codeplex.com/wikipage?title=DotSpatial.Position

Saludos.


¡Gracias! TopoFusion es una gran aplicación para Windows, pero realmente necesito una biblioteca. dotSpatial tiene un código de aspecto útil para cuna. Está bajo licencia pública de Mozilla.
Nelson

0

Si desea alguna especificación abstracta para una API de lenguaje neutral, existe GeoAPI:

"La comunidad de desarrollo en la creación de soluciones SIG está manteniendo un enorme nivel de esfuerzo. El proyecto GeoAPI tiene como objetivo reducir la duplicación y aumentar la interoperabilidad al proporcionar API neutrales, solo de interfaz derivadas de los estándares OGC / ISO".

http://www.geoapi.org/

y más específicamente el Estándar de Implementación (PDF)


0

Sube tu pista GPX a esta URL

Se le proporcionará la mayoría de los servicios que solicitó, específicamente:

  • Calcular la distancia recorrida en la pista
  • Calcular la velocidad media
  • Calcular el tiempo en movimiento frente al tiempo estacionario (visible en el perfil de velocidad)
  • Simplifique la pista, elimine segmentos estacionarios
  • Alisar el error de muestreo de GPS
  • Convierte la pista KML / KMZ, etc. para visualización
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.