2013-03-06 16 views
6

Ho un piccolo problema algoritmico.Latitudine/Longitudine e metri

Sto sviluppando un'applicazione Android. Ottengo le coordinate GPS. Ad esempio: latitudine: 23.23907, longitudine: 50.45786.

Quindi ottengo un punto. Voglio calcolare i dettagli dei limiti su questo punto più o meno 5 metri. I.e .:

[23.23907 - 5 meters ; 23.23907 + 5 meters] 
[50.45786 - 5 meters ; 50.45786 + 5 meters] 

Come eseguire questo calcolo?

Grazie mille!

+2

Controllare questo: http://stackoverflow.com/questions/639695/how-to-convert-latitude-or-longitude-to-meters – Trinimon

+0

possibile duplicato di [trovare una coordinata a una certa distanza dalla sorgente] (http: // stackoverflow.com/questions/14398378/finding-a-coordinate-at-some-distance-from-the-source) – Joni

risposta

14

La formula di haversine può essere semplificata molto quando si lavora solo nelle direzioni nord-sud e est-ovest.

Se la circonferenza della Terra è C, il punto a d chilometri a sud di un dato punto è 360 * d/C gradi a sud. Il punto a d chilometri a est è 360 * d/(C * cos (latitudine)) gradi a est. Il coseno nel denominatore deriva dal fatto che la lunghezza della longitudine a una data latitudine più breve dell'equatore di quello stesso valore.

Quindi, se the Earth's circumference è 40075,04 chilometri, per passare 5 m al nord/sud si dovrebbe aggiungere/sottrarre 0,0000,449 mila dalla latitudine e utilizzare la stessa longitudine. Per spostarsi di 5 m verso ovest/est, utilizzare la stessa latitudine e aggiungere/sottrarre 0,0000449/cos (latitudine) alla longitudine. Non dimenticarti dei casi limite: vicino ai poli devi serrare la latitudine a 90 ° e vicino alla longitudine di 180 ° anche tu aggiungere o sottrarre 360 ​​° per mantenere la longitudine nell'intervallo corretto.

Con i numeri della gamma risulta essere di circa:

latitude: [23.23903 ; 23.23911] 
longitude: [50.45781 ; 50.45791] 

Aggiornamento: Si noti che questo presuppone ancora che la Terra è una sfera perfetta, which it's not. Il sistema GPS per esempio modella la Terra come un ellissoide dove l'equatore si trova a 6378.137 km ei poli si trovano a 6356.7523142 km dal centro della Terra. La differenza è di circa 1/300th e conta molto per molte applicazioni, ma in questo caso è all'interno del margine di errore.

Correggere la formula per la longitudine dovrebbe essere semplice poiché i paralleli sono ancora cerchi: dovresti solo scambiare cos(latitude) per il coefficiente corretto. Il calcolo dello correct latitude è più difficile perché i meridiani non sono cerchi ma ellissi e la lunghezza dell'arco di un'ellisse non può essere calcolata utilizzando le funzioni elementari, quindi è necessario utilizzare le approssimazioni.

+0

Grazie mille, è semplice! – Apaachee

+0

@AntoineMathys: corretto, ho aggiunto una nota al riguardo. – Joni

4

Vorrei aggiungere un commento molto importante (per chi non lo sapesse o per coloro che hanno dimenticato questo):

il coseno deve essere calcolato sulla latitudine in radianti e non in gradi.

conversione: radianti = PI/180 gradi *


(mi scuso per fare una risposta, ma con il mio attuale reputazione di 35 non posso pubblicare un commento)