distinguere le richieste dallo stesso veicolo

1

Sto implementando una piccola app per monitorare i bus basati su Crowdsorcing. I riders inviano i dati long, lat, mac, route al server come stringa JSON.

Nel mio database ho tabella bus per inserire i dati trasmessi. Un record nella tabella bus rappresenta un veicolo bus. Pertanto, un pilota deve aggiornare il record del veicolo bus nel caso in cui molti piloti si trovino nello stesso bus e i loro dispositivi trasmettano dati al server dallo stesso bus.

Per raggiungerlo ho provato a filtrare le richieste dallo stesso bus con l'aiuto della formula haversine ma è eccessivo per breve distanza. C'è un altro modo per raggiungerlo senza prendere in considerazione la distanza tra il mittente delle richieste?

    
posta Mr Asker 02.06.2015 - 11:49
fonte

2 risposte

1

Come capisco il problema, vuoi associare i dati posizione / ora dal dispositivo con un bus.

presumibilmente hai il lato server delle informazioni sugli orari, quindi sai quanti bus ci sono e approssimativamente a che ora si trovano alle varie fermate.

hai più messaggi di posizione / tempo / dispositivo con un grado di errore nella misurazione della posizione / del tempo che potrebbe provenire da:

  • A: 2 dispositivi in un unico bus - appare che ci sono 2 bus nella stessa posizione

  • B: 2 bus nella stessa posizione, 1 dispositivo per bus - sembra che ci sia 1 bus

È possibile risolvere questi scenari solo con dati aggiuntivi. vale a dire. se hai due dispositivi che si avvicinano e poi separano, puoi dedurre che ci sono due bus. Se i due dispositivi coincidono perfettamente con la posizione (userei solo la matematica euclidea) per un periodo di tempo coerente con un orario del bus, puoi dedurre che si trovano sullo stesso bus.

A causa dei grandi errori nella localizzazione dei GPS, in particolare nelle città, è probabile che si ottengano molti dati incoerenti. Se provi a visualizzarlo in tempo reale, la visualizzazione sfarfallerà mentre reinterpreti i dati nel tempo.

Puoi aggirare questo affidandoti agli orari più dei dati. Vorrei provare a rilevare eventi dai dati aggregati

  • Il bus si è fermato tra le fermate per più di x quantità di tempo

  • Bus a traffico lento. tempo significativamente in ritardo nella tabella

a meno che questo tipo di cose non accada, mostra solo la posizione del bus in base all'orario

    
risposta data 02.06.2015 - 12:35
fonte
1

Non c'è davvero alcun motivo per convertirsi dai gradi. Basta fare un semplice confronto:

if abs(lat1 - lat2) < lat_threshold and abs(long1 - long2) < long_threshold:

Il trucco sta nell'impostare soglie appropriate. Questo può variare a seconda della tua posizione, ma per il tuo scopo potrebbe essere considerato costante in un'area metropolitana, quindi puoi calcolarli una volta manualmente o impostarli empiricamente. Ti dà anche un rettangolo invece di un cerchio, ma è anche trascurabile per i tuoi scopi.

Tieni presente che se non vuoi gestire la velocità di stima e così, avrai bisogno di un modo per garantire che i rapporti siano sincronizzati in tempo.

    
risposta data 02.06.2015 - 20:15
fonte

Leggi altre domande sui tag