Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Fórmulas para calcular a proximidade geográfica


A Lei dos Cossenos e a Fórmula de Haversine darão resultados idênticos assumindo uma máquina com precisão infinita. A fórmula de Haversine é mais robusta para erros de ponto flutuante. No entanto, as máquinas de hoje têm precisão dupla da ordem de 15 algarismos significativos, e a lei dos cossenos pode funcionar muito bem para você. Ambas as fórmulas assumem uma terra esférica, enquanto a solução iterativa de Vicenty (mais precisa) assume uma terra elipsoidal (na realidade a terra nem é um elipsóide - é um geóide). Algumas referências:http://www.movable-type. co.uk/scripts/gis-faq-5.1.html

Fica melhor:observe a latitude a ser usada na lei dos cossenos assim como o Haversine é a latitude geocêntrica, que é diferente da latitude geodésica. Para uma esfera, estes dois são os mesmos.

Qual deles é mais rápido de calcular?

Em ordem do mais rápido para o mais lento estão:lei dos cossenos (5 chamadas trig.) -> haversine (envolve sqrt) -> Vicenty (tem que resolver isso iterativamente em um loop for)

Qual deles é o mais preciso?

Vicentina.

Qual é o melhor quando a velocidade e a precisão são consideradas?

Se o domínio do seu problema é tal que, para as distâncias que você está tentando calcular, a Terra pode ser considerada plana, você pode elaborar (não vou dar detalhes) uma fórmula da forma x =kx * diferença na longitude , y =ky * diferença de latitude. Então distância =sqrt(dxdx + dy dia). Se o domínio do seu problema for tal que possa ser resolvido com a distância ao quadrado, então você não precisará usar sqrt, e essa fórmula será o mais rápido possível. Tem a vantagem adicional de poder calcular o vetor distância - x é a distância na direção leste e y é a distância na direção norte. Caso contrário, experimente o 3 e escolha o que funciona melhor na sua situação.