2009-08-10 6 views
88

Y a-t-il un calcul simple que je peux faire qui convertira km en une valeur que je peux ajouter à un flottant lat ou lon pour calculer une boîte englobante pour les recherches? Il n'a pas besoin d'être complètement précis. Par exemple: si on me donnait un lat/lon pour Londres, Angleterre (51.5001524, -0.1262362) et je voulais calculer quel serait le lat à 25km est/ouest à partir de ce point, et ce que le lon serait à 25km au nord/au sud de ce point, que devrais-je faire pour convertir les 25km en nombre décimal pour les ajouter aux valeurs ci-dessus?Des calculs simples pour travailler avec lat/lon + km de distance?

Je suis à la recherche d'une règle de pouce général, à savoir: 1 km == +/- 0.XXX

Edit:

Ma recherche originale pour "lat lon" n » ai pas t retourner ce résultat:

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

La réponse acceptée semble suffisante pour mes besoins.

Répondre

171

Les conversions approximatives sont:

  • Latitude: 1 ° = 110,574 km
  • Longitude: 1 ° = 111,320 * cos (latitude) km

Ceci ne s'applique pas complètement correct pour l'aplatissement polaire de la Terre - pour cela, vous voudriez probablement une formule plus compliquée utilisant l'ellipsoïde de référence WGS84 (le modèle utilisé pour le GPS). Mais l'erreur est probablement négligeable pour vos objectifs.

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

Attention: Sachez que les coordonnées LatLong sont exprimées en degrés, alors que la fonction cos dans la plupart (? Toutes) langues accepte généralement radians, donc degree to radians conversion est nécessaire.

+0

Voulez-vous dire cos (longitude) dans la deuxième formule? – Odys

+1

Comment avez-vous trouvé cela? Il me manque quelque chose, pouvez-vous élaborer sur les calculs de Longitude? Ty – Odys

+4

@Odys: Si vous comparez deux points situés sur la même ligne de longitude (nord/sud), ils se trouvent sur un grand cercle et le facteur de conversion est juste la circonférence polaire de la Terre divisée par 360 degrés. Mais c'est différent pour les mesures est-ouest, parce que (à l'exception de l'équateur) vous ne mesurez pas un "grand cercle", donc la "circonférence" à une latitude donnée est plus petite. Et le facteur de correction s'avère être le cosinus de la latitude. –

3

Si vous utilisez Java, Javascript ou PHP, puis il y a une bibliothèque qui fera ces calculs exactement, en utilisant une manière amusante compliquée (mais rapide) trigonométrie:

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

+0

Le site a la bibliothèque maintenant. – midfield99

0

http://www.jstott.me.uk/jcoord/ - utilisez cette bibliothèque

  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); 
Questions connexes