Estrai posizioni significative dalle letture GPS

1

Sto scrivendo un'app che monitora continuamente la posizione dell'utente 24 ore al giorno utilizzando un telefono cellulare con letture ogni 5-30 minuti (circa 50-300 letture al giorno).

Come faccio a raggruppare le letture e ad estrarre le sedi significative degli utenti tenendo conto dei seguenti requisiti:

  • L'output deve essere un elenco cronologico dei luoghi visitati. Se l'utente è a casa al mattino e alla sera, ci sono due posizioni segnalate. E non ho bisogno di trovare una correlazione tra queste "due posizioni"
  • La precisione delle letture di posizione può essere variabile e non molto buona. Alcune letture possono provenire dal GPS e altre da torri cellulari triangolate o reti wifi.
  • Non troppo complesso in termini di CPU / memoria
  • Non è complesso da implementare o esistente in Java è un vantaggio.
posta lujop 27.02.2016 - 11:21
fonte

2 risposte

1

Ciò che conta davvero è il tempo, le coordinate (longitudine e latitudine) e i dettagli dei luoghi. Se ottieni coordinate e posizioni in formato JSON, dovrai analizzare i dati JSON utilizzando la classe JSONObject. Vedi il tutorial sull'analisi di JSON al link .

Ogni volta che la tua app ha recuperato i dati dell'utente, estrai le coordinate e i dettagli dei luoghi. Quindi, scriverli nel database dell'utente correlato. Per tempo, dovrai scrivere una sceneggiatura che sappia che ora è mattina o sera.

    
risposta data 14.05.2016 - 22:48
fonte
1

Che ne dici di questo.

Hai una serie di punti dati come [x, y, t] triple - dove e quando.

Molti punti (x, y) saranno vicini l'uno all'altro. Se lo sono, generalmente significa che l'utente si trova in un luogo e il suo GPS sta generando rumore. Quindi è necessario classificare le letture come facenti parte di un gruppo più ampio. Se sono distanti, ciò indica il viaggio.

Dai un'occhiata a dendrogrammi e al raggruppamento gerarchico per informazioni su come raggruppare i dati x-y negli alberi. Completare il clustering di concatenamento potrebbe essere una buona scelta. I punti bassi sull'albero sono più vicini agli indirizzi stradali; il cluster dei punti più alti per quartieri, i cluster migliori per le città, ecc.

Cammini il tuo albero alla ricerca di una soglia di separazione. Ad esempio, se due nodi sono a 100 miglia l'una dall'altra, allora si vuole assolutamente contenerlo come due posizioni. Se sono a 10 piedi di distanza, questa è una posizione. Quindi utilizzi il tuo albero per ottenere il tuo insieme distinto di posizioni.

Potresti considerare la dimensione del gruppo. Una lettura senza vicini è probabilmente presa durante il viaggio - ad esempio, a metà strada lungo un'autostrada - quindi potrebbe non contare per la tua applicazione. Molte località vicine indicano che l'utente rimane in un punto.

Infine, perché non chiedi foursquare che cosa è al centro del cluster e ottieni una descrizione descrittiva facile da usare?

    
risposta data 15.05.2016 - 10:35
fonte

Leggi altre domande sui tag