algorithm geometry geolocation

algorithm - Cálculos simples para trabajar con lat/lon+km de distancia?



geometry geolocation (3)

¿Existe 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 las búsquedas? No necesita ser completamente exacto.

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

Estoy buscando una regla general, es decir: 1km == +/- 0.XXX

Editar:

Mi búsqueda original de "lat lon" no devolvió este resultado:

¿Cómo se calcula el cuadro delimitador para una ubicación lat / lng determinada?

La respuesta aceptada parece adecuada para mis requerimientos.


Las conversiones aproximadas son:

  • Latitud: 1 grado = 110.574 km
  • Longitud: 1 grado = 111.320 * cos (latitud) km

Esto no corrige por completo 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 los idiomas (todos) generalmente acepta radianes, por lo tanto, se necesita una conversión de grado a radianes .


Si está usando Java, Javascript o PHP, entonces hay una biblioteca que hará estos cálculos exactamente, usando alguna trigonometría gratamente complicada (pero aún rápida):

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


http://www.jstott.me.uk/jcoord/ - use 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);