2009-08-10 12 views
88

¿Hay un cálculo simple que pueda hacer que convierta km en un valor que pueda agregar a un flotante lat o lon para calcular un cuadro delimitador para búsquedas? No necesita ser completamente exacto.¿Cálculos simples para trabajar con lat/lon + km de distancia?

Por ejemplo: si me dieran un lat/lon para Londres, Inglaterra (51.5001524, -0.1262362) y quisiera calcular qué latitud estaría a 25km al este/oeste de ese punto, y qué longitud tendría 25km al norte/al sur de ese punto, ¿qué tendría que hacer para convertir los 25km en un decimal para agregar a los valores anteriores?

Busco una regla empírica general, es decir: A 1 km == +/- 0.XXX

Editar:

Mi original de la búsqueda para "lon lat" didn' vuelta de t este resultado:

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

La respuesta aceptada parece adecuado para mis necesidades.

Respuesta

171

Las conversiones aproximadas son:

  • Latitud: 1 ° = 110,574 kilometros
  • Longitud: 1 ° = 111.320 * cos (latitud) km

Esto no significa totalmente correcto para el aplanamiento polar de la Tierra, para eso probablemente querría una fórmula más complicada utilizando el elipsoide de referencia WGS84 (el modelo utilizado para el GPS). Pero el error es probablemente insignificante para sus propósitos.

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

Precaución: Tenga en cuenta que las coordenadas LatLong se expresan en grados, mientras que la función cos en la mayoría de (? Todos) idiomas normalmente acepta radianes, por lo tanto, se necesita un degree to radians conversion.

+0

¿Se refiere a cos (longitud) en la segunda fórmula? – Odys

+1

¿Cómo se te ocurrió esto? Me falta algo, ¿pueden detallar los cálculos de la Longitud? Ty – Odys

+4

@Odys: si está comparando dos puntos que se encuentran en la misma línea de longitud (norte/sur), se encuentran en un gran círculo y el factor de conversión es solo la circunferencia polar de la Tierra dividida por 360 grados. Pero es diferente para las mediciones este-oeste, porque (a excepción del ecuador) no se mide a lo largo de un "gran círculo", por lo que la "circunferencia" en una latitud dada es menor. Y el factor de corrección resulta ser el coseno de la latitud. –

3

Si está utilizando Java, JavaScript o PHP, entonces hay una biblioteca que va a hacer estos cálculos exactamente, el uso de algunos divertidamente complicada (pero sigue siendo rápido) trigonometría:

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

+0

El sitio tiene la biblioteca ahora. – midfield99

0

http://www.jstott.me.uk/jcoord/ - utilice esta biblioteca

  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); 
Cuestiones relacionadas