sql >> Base de Datos >  >> RDS >> Mysql

Fórmulas para calcular la proximidad geográfica

La Ley de los Cosenos y la Fórmula de Haversine darán resultados idénticos asumiendo una máquina con precisión infinita. La fórmula de Haversine es más resistente a los errores de punto flotante. Sin embargo, las máquinas actuales tienen doble precisión del orden de 15 cifras significativas, y la ley de los cosenos puede funcionar bien para usted. Ambas fórmulas asumen una tierra esférica, mientras que la solución iterativa de Vicenty (la más precisa) asume una tierra elipsoidal (en realidad, la tierra ni siquiera es un elipsoide, es un geoide). Algunas referencias:http://www.movable-type. co.uk/scripts/gis-faq-5.1.html

Se pone mejor:tenga en cuenta la latitud que se utilizará en la ley de los cosenos, así como el Haversine es la latitud geocéntrica, que es diferente de la latitud geodésica. Para una esfera, estos dos son iguales.

¿Cuál es el más rápido de calcular?

En orden del más rápido al más lento están:ley de cosenos (5 llamadas trigonométricas) -> haversine (involucra sqrt) -> Vicenty (tengo que resolver esto iterativamente en un ciclo for)

¿Cuál es el más preciso?

vicente

¿Cuál es mejor cuando se consideran tanto la velocidad como la precisión?

Si el dominio de su problema es tal que para las distancias que está tratando de calcular, la tierra puede considerarse plana, entonces puede calcular (no voy a dar detalles) una fórmula de la forma x =kx * diferencia en longitud , y =ky * diferencia de latitud. Entonces distancia =sqrt(dxdx + dy dí). Si el dominio de su problema es tal que se puede resolver con la distancia al cuadrado, entonces no tendrá que tomar sqrt, y esta fórmula será lo más rápida posible. Tiene la ventaja añadida de que puedes calcular el vector distancia:x es la distancia en dirección este e y es la distancia en dirección norte. De lo contrario, experimente con los 3 y elija lo que funcione mejor en su situación.