2012-04-03 12 views
12

il mio problema è che ho un ampio set di tracce GPS da diversi logger GPS usati nelle auto. Quando non è disattivato questi dispositivi a basso costo log movimenti fantasma, anche se ancora in piedi:Strategie per rilevare e eliminare aggregazioni ingombranti di punti GPS?

enter image description here

Come si può vedere nell'immagine sopra, circa un migliaio di punti vengono visualizzati in una sorta di congestione. Ora voglio rimuovere tutti questi punti in modo che la traccia rossa proveniente da sinistra termini prima che inizi il jitter. Il mio approccio è quello di "disegnare" due o tre cerchi attorno a ciascun punto della traccia, controllare quanti altri punti si trovano all'interno di questi ambienti e controllare il rapporto:

(#points/covered area) > threshold?

enter image description here

Se il soglia supera un certo rapporto (cerchi viola), potrei cancellare tutti i punti all'interno. Quindi: metodo semplice, ma ha enormi svantaggi, ad es. il tempo di calcolo, eliminando le tracce "innocenti" solo passando attraverso il cerchio, non rileva valori anomali come i singoli punti nella parte inferiore dell'immagine).

Sto cercando un modo migliore per rilevare grossi cumuli di punti come nell'immagine. Non dovrebbe rimuovere i falsi positivi (di forse 5 o 10 punti, queste aggregazioni non mi importano). Inoltre, non dovrebbe semplificare il resto della traccia!

Edit: Il risultato in data esempio dovrebbe essere così: enter image description here

+0

+1 per la visualizzazione, anche se penso che la domanda potrebbe essere migliorata spiegando le proprie considerazioni in modo un po 'più specifico. Altrimenti questo sembra essere un po 'ampio. –

+0

Come sei andato avanti con questo? Devo fare una cosa molto simile. – NickG

+0

Algoritmo di lavoro opensource here http://stackoverflow.com/questions/4480434/simplification-optimization-of-gps-track/36195571#36195571 –

risposta

2

Il mio primo passo sarebbe quello di indagare le velocità impliciti nei 'movimenti' della vostra vettura ferma e le variazioni di altitudine. Se uno di questi cambiamenti è troppo veloce o troppo lento (dovrai decidere qui le soglie), puoi probabilmente concludere che sono dovuti al jitter GPS.

Quali informazioni, oltre alla posizione alla volta, segnalano il dispositivo GPS?

EDIT (dopo il commento di OP)

Il problema è quello di caratterizzare una parte del registro come 'macchina in movimento' e parte del registro come 'auto non si muove, ma la posizione GPS jittering'. Proposi un approccio, Benjamin ne suggerì un altro. Se la velocità non discrimina sufficientemente, prova l'accelerazione. Prova il tasso di cambio di rotta. Se nessuno di questi approcci semplici funziona, penso che sia giunto il momento per te di scomporre i tuoi libri di testo delle statistiche e iniziare a calcolare l'autocorrelazione di processi casuali e simili. A questo punto mi allontano silenziosamente ...

+0

Questo è un buon punto e ho pensato anche a questo. Una soglia per provare potrebbe essere 3 km/h. Oltre al tempo e alla posizione, il logger fornisce solo informazioni sui dati calcolati (velocità, accelerazione e direzione). È un NMC RMN spogliato, nessuna informazione sulla qualità del segnale o dati satellitari. – Norbert

+0

Ho controllato i file gpx: il jittering contiene velocità superiori a 10 km/h, quindi questo metodo non funziona! :( – Norbert

2

Analogamente alla risposta di High Performance Mark, è possibile cercare intersezioni di linea che si verificano entro un breve numero di punti. Quando si guida su una strada, il percorso degli ultimi n punti si interseca raramente con se stesso, ma nella situazione stazionaria a causa del jitter. Una singola intersezione potrebbe essere una persona che raddoppia o circonda un isolato, ma le intersezioni multiple dovrebbero essere più rare. L'angolo di intersezione sarà anche più nitido per il caso jitter.

+0

+1: Mi piace questa risposta perché suggerisce una soluzione rapida e immediatamente implementabile che probabilmente funzionerebbe Bravo –

+0

Per quanto riguarda le intersezioni "false positive" - ​​osservando la spaziatura dei punti, direi che la risoluzione temporale è attiva l'ordine di un secondo: per ripetutamente auto-intersecare il tuo percorso su quella scala temporale, dovresti essere un cane che insegue la tua stessa coda. –

-1

Qual è l'intervallo di dati dei punti GPS, sembra che siano in pochi secondi. Potrebbe esserci un altro modo per aggiungere alla logica precedentemente menzionata.

sum_of_distance (d0, d1, d2 ....dn)> = 80% di sum_of_distance (d0, dn)

Questa 0 a n esimo valore può iterare in blocchi più piccoli e più grandi, come la distanza percorsa in tale intervallo non sarà molto. Quindi, è possibile eseguire l'iterazione inizialmente di 60 punti di dati e all'interno di tali dati scorrere in 10 numeri di dati in ciascuna iterazione.

Problemi correlati