2009-08-10 12 views
88

C'è un semplice calcolo che posso fare che convertirà km in un valore che posso aggiungere a un lat o lon float per calcolare un riquadro di delimitazione per le ricerche? Non ha bisogno di essere completamente preciso.Calcoli semplici per lavorare con lat/lon + km di distanza?

Per esempio: se mi fosse dato un lat/lon per Londra, Inghilterra (51.5001524, -0.1262362) e volevo calcolare che lat sarebbe 25km est/ovest da quel punto, e quale sarebbe il lon 25km nord/a sud di quel punto, cosa dovrei fare per convertire i 25 km in un decimale da aggiungere ai valori sopra indicati?

Sto cercando una regola empirica generale, vale a dire: 1km == +/- 0.XXX

Edit:

La mia ricerca originale di "lon lat" didn' t restituisce questo risultato:

How to calculate the bounding box for a given lat/lng location?

La risposta accettata sembra adeguato per le mie esigenze.

risposta

171

Le conversioni approssimative sono:

  • Latitudine: 1 ° = 110,574 km
  • Longitudine: 1 ° = 111,320 * cos (latitudine) km

Questo non completamente corretto per l'appiattimento polare della Terra - per questo probabilmente vorresti una formula più complicata usando l'ellissoide di riferimento WGS84 (il modello utilizzato per il GPS). Ma l'errore è probabilmente trascurabile per i tuoi scopi.

Fonte: http://en.wikipedia.org/wiki/Latitude

Attenzione: Tenere presente che le coordinate LatLong sono espresse in gradi, mentre la funzione cos nella maggior parte (? Tutti) lingue accetta tipicamente radianti, pertanto è necessario un degree to radians conversion.

+0

Intendi cos (longitudine) nella seconda formula? – Odys

+1

Come ti è venuto in mente questo? Mi manca qualcosa, puoi approfondire i calcoli della Longitudine? Ty – Odys

+4

@Odys: se si confrontano due punti che si trovano sulla stessa linea di longitudine (nord/sud), si trovano su un grande cerchio e il fattore di conversione è solo la circonferenza polare della Terra divisa per 360 gradi. Ma è diverso per le misurazioni est-ovest, perché (ad eccezione dell'equatore) non si misura lungo un "grande cerchio", quindi la "circonferenza" a una data latitudine è minore. E il fattore di correzione risulta essere il coseno della latitudine. –

3

Se stai usando Java, Javascript o PHP, poi c'è una biblioteca che farà questi calcoli esattamente, utilizzando alcuni in modo divertente complicato (ma ancora veloce) trigonometria:

http://www.jstott.me.uk/jcoord/

+0

Il sito ha la libreria ora. – midfield99

0

http://www.jstott.me.uk/jcoord/ - utilizzare questo libreria

  LatLng lld1 = new LatLng(40.718119, -73.995667); 
      LatLng lld2 = new LatLng(51.499981, -0.125313); 
      Double distance = lld1.distance(lld2); 
      Log.d(TAG, "Distance in kilometers " + distance); 
Problemi correlati