Esiste una buona libreria di analisi delle tracce GPS?


35

Continuo a scrivere codice personalizzato per lavorare con le tracce GPS: file GPX e log NMEA dal mio telefono, logger GPS dedicato, ecc. Mi sento come se stessi reinventando la ruota e mi chiedo se ci sia qualche libreria / strumento standard che posso usare per lavorare con tracce GPS. Alcune delle cose che mi piace fare:

  • Calcola la distanza percorsa in pista
  • Calcola la velocità media e le velocità istantanee lungo la pista
  • Calcola il tempo in movimento rispetto al tempo stazionario
  • Semplifica la traccia, elimina i segmenti fissi
  • Segmenta una traccia in tracce separate, una per viaggio
  • Appianare l'errore di campionamento GPS
  • Crea un profilo altimetrico osservando i punti in un DEM
  • Converti le tracce in GPX, KML, ecc. Per la visualizzazione

Esistono diverse applicazioni che analizzano le tracce GPS. Sto cercando una libreria di software o un set di strumenti programmabili in modo da poter scrivere le mie applicazioni. Non mi interessa molto i formati di input; qualsiasi tipo di punti lat / lon con timestamp va bene. Lavoro principalmente in Python su Unix ma praticamente funzionerà qualsiasi lingua.

Gli strumenti esistenti che utilizzo includono GPSBabel e GDAL / OGR per la conversione e PostGIS per lavorare con la geometria della traccia come una stringa di linea. Ma soprattutto finisco per scrivere il mio codice Python che funziona su array di coppie lat / lon e che sembra troppo basso. Anche alcune delle attività sopra descritte (come la rimozione dell'errore GPS) sono piuttosto sottili. C'è qualche libreria esistente là fuori che dovrei usare?


1
Dopo una settimana o due e una taglia penso che la risposta alla mia domanda qui sia "no, non esiste una libreria per l'elaborazione delle tracce GPX". Molte applicazioni e codice, ma nessuno strumento generico. È utile saperlo. Per me la strada da percorrere è scrivere un codice PostGIS che funzioni con lo schema creato dall'importazione GPX di ogr2ogr. Tale schema contiene sia un semplice LineString per la traccia sia una tabella di punti con timestamp per la dimensione temporale.
Nelson,

Anche il codice Delphi è un'opzione?

Google ha appena annunciato un'API di Tracks che sto citando qui per completezza. Sembra utile ma in una direzione diversa da quella che sto cercando; altro su pangrattato e geofence.
Nelson,

1
@Nelson Date un'occhiata a questa risposta, da uno dei creatori della (piuttosto eccellente editor di corsa in linea) Ride With GPS: stackoverflow.com/a/13084082/401828
heltonbiker

@Nelson Questa domanda è ancora molto attuale per me, circa 4 anni dopo. Nel frattempo hai trovato una buona soluzione?
amball

Risposte:


7

Bene, un po 'dipende dal tuo linguaggio di programmazione preferito, ma ho sviluppato mineturer.org in Java (il sito è essenzialmente un sito per caricare, analizzare e visualizzare dati GPX).

Iv'e ha usato JAX-B (http://jaxb.java.net/) per leggere i file GPX (basati sullo schema GPX) e JTS (http://www.vividsolutions.com/jts/) + proprio codice per analizzando.

Il codice sorgente per mineturer.org è disponibile con una licenza MIT su https://bitbucket.org/atlefren/gpsorganizer/

Immagino che il codice possa darti almeno alcuni suggerimenti?


Grazie! Il tuo sito ha un bell'aspetto (ed è piuttosto utilizzabile tramite Google Translate anche se non leggi il norvegese). Stai facendo esattamente il tipo di analisi che desidero ed è di grande aiuto per averlo aperto. Per Python probabilmente userei GEOS invece di JTS; ci sono attacchi decenti.
Nelson,

2
se ti piace ... votalo !!
Stev_k,

1
Solo un seguito qui: ho iniziato il porting di questo progetto su Python, usando Shapely e GeoAlchemy (e Flask), funziona ma al momento è piuttosto lento. Codice su github.com/atlefren/mineturer2 per i curiosi
atlefren,

3

Ho scritto un C # -lib per la matematica per la matematica 2d / 3d mirato alla gestione GPS: lettura GPX e TCX, filtraggio e semplificazione di tracce, raggruppamento di tracce / segmenti e trasformazione in piano 2d.

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

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


È possibile ottenere una descrizione o documentazione per quel Nugets?
Petr Krampl

Vedrò se posso aggiungere un file Leggimi.MD al pacchetto NuGet.
Martedì

Grazie, il repository non è accessibile. È possibile analizzare anche i file gpx contenenti <rte>e gli <rtept>elementi, oltre agli <trk>elementi?
Petr Krampl,

1
Al momento supporta solo trrk-> trkseg-> trkpt con le estensioni del punto di traccia Garmin, ma ho aggiunto rte-> rtept in 2.3.0, ma finora nessuna convalida.
Martedì

1
Aggiunta documentazione per entrambi i pacchetti su nuget.org.
martedì

2

Il GPS Toolkit dovrebbe aiutare. È una libreria open source e una suite di applicazioni che mira a liberare i ricercatori dalla codifica di livello inferiore.

Fornisce le seguenti funzionalità:

  • Utilità RINEX
  • Posizionamento
  • Analisi residua
  • Modellistica ionosferica
  • Simulazione di tracciamento del segnale T
  • Trasformazioni di base
  • Raccolta e conversione dei dati di osservazione
  • Confronto e convalida dei file.
  • Modifica dei dati
  • Posizionamento autonomo e relativo.

Grazie per la risposta! GPSTk sembra affascinante ma è a un livello inferiore di quello che sto cercando. Sembra che si tratti di lavorare con segnali radio GPS grezzi e derivarne correzioni di posizione. Ho già delle correzioni di posizione dal mio hardware GPS di consumo e non ho accesso ai dati satellitari di basso livello.
Nelson,


0

Ottima domanda! Ho lavorato un po 'con i dati GPX di recente e la soluzione più semplice che ho trovato è stata quella di convertire i punti di traccia in un formato db spaziale e quindi creare viste (spaziali e tabulari) per riassumere i dati secondo necessità. Non sono stato in grado di ottenere i risultati necessari usando OGR per importare i miei dati GPX, quindi ho finito con un semplice script Python per attraversare la struttura ad albero XML del GPX e caricarlo nel db (SpatiaLite nel mio caso). Questo sicuramente non ti aiuta a evitare di reinventare la ruota, tuttavia ho scoperto che sono stato in grado di ottenere i risultati desiderati di riepilogo delle tracce in base al viaggio utilizzando le funzioni SQL e spaziali SQL esistenti.


1
Lo svantaggio principale che ho riscontrato con PostGIS LineStrings è che non contengono dati di data e ora. Posso certamente seguirli da solo in uno schema separato, ma PostGIS non sta facendo nulla per aiutarmi a fare calcoli basati sul tempo. Hai qualche trucco per questo?
Nelson,

0

Sto sviluppando questo piccolo morbido per uso personale. È principalmente per la visualizzazione e non supporta tutte le tue esigenze, ma forse può aiutarti!


Grazie! È open source e in Java, quindi è sicuramente un aiuto.
Nelson,

0

a rischio di non rispondere alla tua vera domanda :-), lascia che ti suggerisca una fantastica applicazione di cui potresti non aver sentito parlare, che fa tutto ciò che hai elencato -

è il mio sportello unico per la visualizzazione, la modifica e il trasferimento di GPX, tra le altre cose.

E forse più sull'argomento, forse controlla lo spazio dei nomi Posizionamento di dotSpatial (.NET): http://dotspatial.codeplex.com/wikipage?title=DotSpatial.Position

Saluti.


Grazie! TopoFusion è un'ottima applicazione per Windows, ma ho davvero bisogno di una libreria. dotSpatial ha del codice dall'aspetto utile da culla. È sotto licenza pubblica Mozilla.
Nelson,

0

Se desideri alcune specifiche astratte per un'API indipendente dal linguaggio, c'è GeoAPI:

"La comunità di sviluppo nella costruzione di soluzioni GIS sta sostenendo un enorme livello di sforzo. Il progetto GeoAPI mira a ridurre la duplicazione e aumentare l'interoperabilità fornendo API neutre e di sola interfaccia derivate dagli standard OGC / ISO."

http://www.geoapi.org/

e più specificamente lo standard di implementazione (PDF)


0

Carica la tua traccia GPX su questo URL

Ti verrà fornita la maggior parte dei servizi richiesti, in particolare:

  • Calcola la distanza percorsa in pista
  • Calcola la velocità media
  • Calcola il tempo in movimento rispetto al tempo stazionario (visibile sul profilo della velocità)
  • Semplifica la traccia, elimina i segmenti fissi
  • Appianare l'errore di campionamento GPS
  • Converte la traccia KML / KMZ ecc. Per la visualizzazione
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.