¿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 las búsquedas? No es necesario que sea completamente preciso.
Por ejemplo: si me dieran lat / lon para Londres, Inglaterra (51.5001524, -0.1262362) y quisiera calcular cuál sería la latitud a 25 km al este / oeste desde ese punto, y cuál sería la longitud 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 arrojó este resultado:
¿Cómo calcular el cuadro delimitador para una ubicación de lat / lng determinada?
La respuesta aceptada parece adecuada para mis requisitos.
fuente
Respuestas:
Las conversiones aproximadas son:
Esto no corrige completamente el aplanamiento polar de la Tierra, para eso probablemente querrá una fórmula más complicada usando el elipsoide de referencia WGS84 (el modelo usado para GPS). Pero el error probablemente sea insignificante para sus propósitos.
Fuente: http://en.wikipedia.org/wiki/Latitude
Precaución : tenga en cuenta que las coordenadas de latitud se expresan en grados, mientras que la
cos
función en la mayoría de los idiomas (¿todos?) Generalmente acepta radianes, por lo que se necesita una conversión de grados a radianes .fuente
cos(0°) = 1
=> Por lo tanto, no se aplica ningún factor de corrección al hacer el cálculo en el ecuador. Las longitudes son las más anchas allí.cos(90°) = 0
=> En los polos las longitudes se encuentran en un punto. No hay distancia que calcular.Si está usando Java, Javascript o PHP, entonces hay una biblioteca que hará estos cálculos exactamente, usando una trigonometría divertidamente complicada (pero aún rápida):
http://www.jstott.me.uk/jcoord/
fuente
http://www.jstott.me.uk/jcoord/ - use esta biblioteca
fuente
Es interesante que no vi una mención de las coordenadas UTM.
https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system .
Al menos, si desea agregar km a la misma zona, debería ser sencillo (en Python: https://pypi.org/project/utm/ )
utm.from_latlon y utm.to_latlon.
fuente
Gracias Jim Lewis por su gran respuesta y me gustaría ilustrar esta solución con mi función en Swift:
En esta función para convertir la distancia utilizo las siguientes fórmulas:
fuente
¿Por qué no utilizar consultas geoespaciales correctamente formuladas?
Aquí está la página de referencia del servidor SQL en la función geoespacial STContains:
https://docs.microsoft.com/en-us/sql/t-sql/spatial-geography/stcontains-geography-data-type?view=sql-server-ver15
o si no desea usar la conversión de caja y radianes, siempre puede usar la función de distancia para encontrar los puntos que necesita:
Debería haber una funcionalidad similar para casi cualquier base de datos.
Si ha implementado la indexación geoespacial correctamente, sus búsquedas serían mucho más rápidas que el enfoque que está utilizando
fuente