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

PHP MySQL obtém locais na localização do usuário radius a partir do GPS


Calcular a distância é bastante caro computacionalmente, como outros já disseram. Retornar grandes conjuntos de dados também não é uma boa ideia - especialmente considerando que o PHP não é tão bom em desempenho.

Eu usaria uma heurística, como aproximar a distância com adição e subtração simples.

Basta pesquisar o banco de dados com incidentes dentro desse intervalo (efetivamente um quadrado, em vez de um círculo), e então você pode trabalhar com PHP.

EDITAR :Aqui está uma alternativa; uma aproximação que é muito menos dispendiosa computacionalmente:

Distância aproximada em milhas:
sqrt(x * x + y * y)

where x = 69.1 * (lat2 - lat1) 
and y = 53.0 * (lon2 - lon1) 

Você pode melhorar a precisão deste cálculo de distância aproximada adicionando a função matemática do cosseno:

Distância aproximada melhorada em milhas:
sqrt(x * x + y * y)

where x = 69.1 * (lat2 - lat1) 
and y = 69.1 * (lon2 - lon1) * cos(lat1/57.3) 

Fonte:http://www.meridianworlddata.com/Distance-Calculation.asp

EDITAR 2 :fiz vários testes com conjuntos de dados gerados aleatoriamente.
  • A diferença de precisão para os 3 algoritmos é mínima, especialmente em distâncias curtas
  • O algoritmo mais lento (aquele com todas as funções trigonométricas) é 4x mais lento que os outros dois.

Definitivamente não vale a pena. Basta ir com uma aproximação.

O código está aqui:http://pastebin.org/424186