View Full Version : [C#] Determinare posizione automobile Google Maps
Salve a tutti,
spero di aver postato questa discussione nella sezione corretta visto che non la definisco proprio tale. Mi spiego meglio, l' applicazione che sto sviluppando è in C# ma la mia domanda non è rivolta proprio alla programmazione.
Ho un modulo GPS collegato al computer e gestito dalla mia applicazione. Attraverso questo dispositivo mi è possibile rilevare in tempo reale (in realtà in base al download/upload e al traffico della rete) la mia posizione in automobile. Quindi in modo tale da rilevare gli spostamenti che faccio al' interno di una cartografia.
Ecco, mi chiedevo se è possibile stabilire il fatto che un altra autovettura è davanti a me o meno. Naturalmente di fondo è stata stabilita un connessione e la trasmissione dei dati funziona correttamente.
Avevo pensato a calcolare la differenza tra le due coordinate delle auto attraverso le API di Google Maps. Ma questo non mi permette di stabilire la posizione della macchina interessata.
Oppure c' è da dire che posso stabilire se ambedue le autovetture si trovano nella stessa via e calcolarne la distanza. Ma anche questa soluzione può servire relativamente.
Spero di essere stato abbastanza chiaro, in caso contrario chiedete.
Grazie in anticipo.
ingframin
27-04-2012, 07:24
Non ce la fai, nella migliore delle ipotesi un gps ha 10m di precisione, significa che l'auto può benissimo essere davanti o dietro alla tua senza che tu te ne accorga a meno che non sia a una certa distanza.
Anche li comunque gli algoritmi di google maps non sono molto precisi, sai quante volte per seguire google maps mi sono perso? :muro:
Avevo pensato a calcolare la differenza tra le due coordinate delle auto attraverso le API di Google Maps. Ma questo non mi permette di stabilire la posizione della macchina interessata.
Invece è proprio così che devi fare. Una volta calcolata la distanza e imposto il vincolo che le due auto siano sulla stessa strada, se la distanza è superiore alla precisione (quindi 10m + qualche cos'altro dovuto all'imprecisione di maps) dovresti essere in grado di dire stabilire se l'altra auto sta davanti o dietro alla tua, è un semplice calcolo vettoriale in cui devi riportare delle coordinate dal sistema (latitudine,longitudine) al sistema monodimensionale della strada. In pratica è come quando devi trovare la distanza tra due punti su una curva non rettilinea:
dX = x2-x1
dY = y2-y1
Distanza nello spazio x,y= Radice quadrata (dX^2 + dY^2) -> Teorema di Pitagora
Mentre per vedere la distanza "sulla curva" (o nel tuo caso sulla strada) devi fare l'integrale che va da x1 a x2 della curva che descrive la traiettoria (o nel tuo caso la strada) ma fossi in te cercherei nelle api di google con che funzione si trova la distanza tra 2 punti su una strada perché c'è e si usa per calcolare i percorsi quando chiedi le indicazioni stradali.
Invece è proprio così che devi fare. Una volta calcolata la distanza e imposto il vincolo che le due auto siano sulla stessa strada, se la distanza è superiore alla precisione (quindi 10m + qualche cos'altro dovuto all'imprecisione di maps) dovresti essere in grado di dire stabilire se l'altra auto sta davanti o dietro alla tua, è un semplice calcolo vettoriale in cui devi riportare delle coordinate dal sistema (latitudine,longitudine) al sistema monodimensionale della strada.
Nel momento in cui io ho la distanza tra le due auto e ho messo per ipotesi che sono nella stessa via, come faccio a determinare se una mi è davanti o dietro ??
Il calcolo vettoriale che dici posso utilizzarlo solamente per calcolare la distanza minima tra le due.
ingframin
27-04-2012, 20:10
E per questo che ti ho detto di fare l'integrale curvilineo sulla retta, se il risultato dell'integrale ti esce negativo e prendi la tua auto come riferimento vuol dire che l'altra è dietro, altrimenti è davanti. Quando applichi il teorema di pitagora non calcoli la distanza, calcoli il modulo della distanza, ma poi il vettore distanza devi orientarlo.
Puoi sempre calcolare la distanza minima come un vettore (dX,dY) e vedere l'angolo in base al sistema di riferimento che hai stabilito, altrimenti il calcolo dell'integrale è l'unica altra via.
Nel momento in cui io ho la distanza tra le due auto e ho messo per ipotesi che sono nella stessa via, come faccio a determinare se una mi è davanti o dietro ??
Il calcolo vettoriale che dici posso utilizzarlo solamente per calcolare la distanza minima tra le due.
Devi sapere in che direzione stanno andando, ovvero devi confrontare le coordinate attuali con quelle di qualche secondo fa, e decidere quindi quella che sta "davanti"
Ed è possibile lo stesso senza conoscere la destinazione dell' auto davanti ?
Ed è possibile lo stesso senza conoscere la destinazione dell' auto davanti ?
Se sono nella stessa via allora la "destinazione" di entrambe le auto e' il prossimo incrocio.
Resta pero' che se non stanno andando nello stesso posto, occorre che tu definisca cosa vuol dire davanti e cosa dietro.
Devi sapere in che direzione stanno andando, ovvero devi confrontare le coordinate attuali con quelle di qualche secondo fa, e decidere quindi quella che sta "davanti"
Le stringhe NMEA già contengono la direzione in gradi.
ciao!
Si ma questo non permette di determinare se l' auto è davanti
Si ma questo non permette di determinare se l' auto è davanti
mi riferivo a gugoXX che diceva di fare un confronto tra coordinate attuali e ultime scorse. Comunque, devi decidere cosa vuol dire "stare davanti".
ciao!
Per "stare davanti" intendo quell' auto che procede nella mia stessa corsia, verso la mia direzione ed è quella che io vedo di fronte a me.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.