View Full Version : Lavorare con coordinate GPS
rizzotti91
27-12-2013, 00:05
Ciao a tutti vorrei realizzare un progettino che sulla carta è semplice (a puro scopo didattico) però ho delle difficoltà...
Avendo a disposizione latitudine e longitudine di due locazioni, posso calcolarne la distanza con la formula di Vincenty. Il problema è che così vado a calcolare la distanza CREDO in linea d'aria.
Se però poniamo il caso che io per andare a comprare il pane uscendo a piedi ho un mio percorso che passa attraverso stradine etc, sarebbe possibile "creare" dei "checkpoint" (per esempio casa, stradina 1, stradina 2, stradina 3, panificio) in modo che si crei come un percorso ed andare a calcolare la distanza fra dove mi trovo io ed il panificio tenendo però conto del percorso e non della semplice distanza in linea d'aria?
Come possibile soluzione avevo pensato che magari potrei memorizzare le coordinate dei vari "checkpoint" e quando acquisisco le coordinate della mia posizione posso andare a calcolare qual'è il checkpoint più vicino a me in modo da poter approssimare il punto in cui mi trovo e far si che la mia posizione sia sempre un checkpoint, però così facendo non risolvo il problema della distanza tra il checkpoint ed il "panificio" perché la andrei a calcolare sempre in linea d'aria.
Descrivendo il tutto con altre parole, credo mi serva qualcosa che simuli un navigatore satellitare il quale utilizza mappe che tengono conto delle varie strade, sensi di marcia etc. e che quindi calcola la distanza dal punto in cui ci si trova ad un altro tenendo conto della strada percorribile...
Google Maps e le sue API potrebbero essere una soluzione oppure posso farne a meno?
Spero di essermi riuscito a spiegare, grazie a chiunque vorrà aiutarmi :)
rizzotti91
27-12-2013, 19:42
Up!
Inviato dal mio SM-N9005 utilizzando Tapatalk
mone.java
28-12-2013, 09:58
Ciao a tutti vorrei realizzare un progettino che sulla carta è semplice (a puro scopo didattico) però ho delle difficoltà...
Avendo a disposizione latitudine e longitudine di due locazioni, posso calcolarne la distanza con la formula di Vincenty. Il problema è che così vado a calcolare la distanza CREDO in linea d'aria.
Se però poniamo il caso che io per andare a comprare il pane uscendo a piedi ho un mio percorso che passa attraverso stradine etc, sarebbe possibile "creare" dei "checkpoint" (per esempio casa, stradina 1, stradina 2, stradina 3, panificio) in modo che si crei come un percorso ed andare a calcolare la distanza fra dove mi trovo io ed il panificio tenendo però conto del percorso e non della semplice distanza in linea d'aria?
Come possibile soluzione avevo pensato che magari potrei memorizzare le coordinate dei vari "checkpoint" e quando acquisisco le coordinate della mia posizione posso andare a calcolare qual'è il checkpoint più vicino a me in modo da poter approssimare il punto in cui mi trovo e far si che la mia posizione sia sempre un checkpoint, però così facendo non risolvo il problema della distanza tra il checkpoint ed il "panificio" perché la andrei a calcolare sempre in linea d'aria.
Descrivendo il tutto con altre parole, credo mi serva qualcosa che simuli un navigatore satellitare il quale utilizza mappe che tengono conto delle varie strade, sensi di marcia etc. e che quindi calcola la distanza dal punto in cui ci si trova ad un altro tenendo conto della strada percorribile...
Google Maps e le sue API potrebbero essere una soluzione oppure posso farne a meno?
Spero di essermi riuscito a spiegare, grazie a chiunque vorrà aiutarmi :)
Bhe sono cose che le Google Map API fanno già... Non capisco fin dove devi fare tu a mano e fin dove ti puoi appoggiare a componenti esterni... che linguaggio di programmazione devi usare? se puoi usare Java ho una libreria che fa al caso tuo...
rizzotti91
28-12-2013, 12:10
Inizialmente vorrei tentare di realizzarlo in PHP in modo da fare un paginetta web, però successivamente svilupperei un'applicazione android..
mone.java
28-12-2013, 12:26
Inizialmente vorrei tentare di realizzarlo in PHP in modo da fare un paginetta web, però successivamente svilupperei un'applicazione android..
Bhe quando lo vorrai fare in java dai un occhio a questa... https://code.google.com/p/unibo-geotools/ nel frattempo potersti dare un occhio al codice e tradurlo in PHP... ci sono anche le formule per la distanza! dai un occhiata ai test per capire come funziona... Le formule per la distanza sono state prese da qui http://www.movable-type.co.uk/scripts/latlong.html
rizzotti91
28-12-2013, 13:05
Ti ringrazio per la libreria.
Il creare un percorso personalizzato come avviene? È necessario avere le coordinate passo passo?
mone.java
28-12-2013, 13:14
Ti ringrazio per la libreria.
Il creare un percorso personalizzato come avviene? È necessario avere le coordinate passo passo?
public interface DirectionAPI {
public List<Route> getDirectionsBetween(String from, String to) throws Exception;
public List<Route> getDirectionsBetween(GeoPoint from, GeoPoint to) throws Exception;
public List<Route> getDirectionsBetween(String from, String to, List<String> waypoints) throws Exception;
public List<Route> getDirectionsBetween(GeoPoint from, GeoPoint to, List<GeoPoint> waypoints) throws Exception;
}
Come vedi dall'interfaccia della libreria puoi usare 2 modi... O gli passi una stringa che una Polyline (che comunque contiene le informazioni di lat,lon codificate) oppure gli passi direttamente Partenza, Destinazione e I punti in mezzo in cui vuoi passare...
rizzotti91
28-12-2013, 13:25
Suppongo che più punti di mezzo gli passi e più preciso verrà il percorso, no? Se gli passo un punto ogni 500 metri come riesce a disegnarmi il percorso per quella determinata via? Suppongo che ogni volta che si cambia strada dovrò passargli le coordinate, giusto?
mone.java
28-12-2013, 13:36
Suppongo che più punti di mezzo gli passi e più preciso verrà il percorso, no? Se gli passo un punto ogni 500 metri come riesce a disegnarmi il percorso per quella determinata via? Suppongo che ogni volta che si cambia strada dovrò passargli le coordinate, giusto?
Forse allora non ho ben capito dove vuoi arrivare... Le funzioni sopra ti danno il percorso tra due punti usando strade realmente esistenti! quindi non devi fare piu nulla dopo... La libreria non fa altro che interrogare Google il quale basandosi su Google Map ti restituisce una o più strade per arrivare da partenza a destinazione... se tu gli metti i waypoint allora farà in modo di far passare i percorsi dai waypoint!
rizzotti91
28-12-2013, 13:40
Forse allora non ho ben capito dove vuoi arrivare... Le funzioni sopra ti danno il percorso tra due punti usando strade realmente esistenti! quindi non devi fare piu nulla dopo... La libreria non fa altro che interrogare Google il quale basandosi su Google Map ti restituisce una o più strade per arrivare da partenza a destinazione... se tu gli metti i waypoint allora farà in modo di far passare i percorsi dai waypoint!
No, io ho proprio necessità di creare un mio percorso anche in punti dove le strade non esistono (pensa per esempio ad una campagna)... avrei necessità di creare questo percorso con dei waypoint all'interno e calcolare, all'occorrenza, la distanza fra la mia posizione ed un determinato waypoint..
mone.java
28-12-2013, 13:45
No, io ho proprio necessità di creare un mio percorso anche in punti dove le strade non esistono (pensa per esempio ad una campagna)... avrei necessità di creare questo percorso con dei waypoint all'interno e calcolare, all'occorrenza, la distanza fra la mia posizione ed un determinato waypoint..
Allora ti servono soltanto le formule per la distanza in questo link http://www.movable-type.co.uk/scripts/latlong.html sono implementate anche nella libreria in Java.
Le Google API a questo punto penso che non ti servano a nulla...
Direi che non ti serve nient'altro...
rizzotti91
28-12-2013, 14:07
Allora ti servono soltanto le formule per la distanza in questo link http://www.movable-type.co.uk/scripts/latlong.html sono implementate anche nella libreria in Java.
Le Google API a questo punto penso che non ti servano a nulla...
Direi che non ti serve nient'altro...
Le formule di quel link non vanno a calcolare la distanza tra due punti in linea d'aria? Io avevo già trovato una formula per la distanza tra due punti longitudinali ma credo che vada a farei l calcolo proprio in linea d'aria e non sull'effettiva distanza di un percorso da me ideato..
mone.java
28-12-2013, 14:22
Le formule di quel link non vanno a calcolare la distanza tra due punti in linea d'aria? Io avevo già trovato una formula per la distanza tra due punti longitudinali ma credo che vada a farei l calcolo proprio in linea d'aria e non sull'effettiva distanza di un percorso da me ideato..
Ci sono tre formule: La Haversinee la sphericalLawOfCosines tengono conto della curvatura terrestre mentre quella EquirectangularApproximation usa semplicemente il teorema di pitagora queindi calcola in linea d'aria... Ovviamente se vuoi applicare la formula su un percorso da te indicato devi calcolare la distanza tra tutti i punti..
p1---p2---p3 nel caso di 3 punti devi fare due calcoli...
rizzotti91
28-12-2013, 20:10
Ci sono tre formule: La Haversinee la sphericalLawOfCosines tengono conto della curvatura terrestre mentre quella EquirectangularApproximation usa semplicemente il teorema di pitagora queindi calcola in linea d'aria... Ovviamente se vuoi applicare la formula su un percorso da te indicato devi calcolare la distanza tra tutti i punti..
p1---p2---p3 nel caso di 3 punti devi fare due calcoli...
Però se ho un percorso di un km a sto punto devo prendere le coordinate di diversi waypoint perché se no il calcolo sarà molto impreciso..
Inviato dal mio SM-N9005 utilizzando Tapatalk
wizard1993
28-12-2013, 22:56
come hai già intuito il sistema più semplice per ovviare al problema è effettuare un campionamento il più fitto possibile.
Se, per esempio, acquisisci le coordinate ogni 3/5 secondi grossi problemi non li dovresti avere
mone.java
29-12-2013, 11:29
Però se ho un percorso di un km a sto punto devo prendere le coordinate di diversi waypoint perché se no il calcolo sarà molto impreciso..
Inviato dal mio SM-N9005 utilizzando Tapatalk
esatto!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.