Olá a todos!
Encontrei o seguinte artigo para calculo entre dois pontos http://www.members.tripod.com/caraipora ... pontos.htm
Depois de apanhar um pouco, consegui traduzir a explicação para uma fórmula no banco de dados! Funciona perfeitamente.
O que eu quero fazer agora, é criar uma “Bounding Box” ou “Envelope” de um certo ponto.
Ex: Eu escolho um ponto, dai quero buscar a MaxLat, MinLat, MaxLong e MinLong do ponto com uma distancia fornecida tambem.
Deu pra entender?
Eu quero basicamente criar um quadrado em votla do ponto baseado em alguma distancia fornecida, como 2km, 5km e afins.
Então fui usar a fórmula novamente e consegui reverter ela para encontrar a MinLong e MaxLong. Mas para latitude sempre dá errado, e nao consigo encontrar o erro.
O reverso da formula ficou assim
Sendo
GRAUS_DISTANCIA = 360 . DISTANCIA_EM_KM / 40030
@LAT = Latitude do ponto fornecido
@LONG = Longitude do ponto fornecido
Para Longitude: (essa funciona)
- [ ACOS( ( COS(GRAUS_DISTANCIA) - (COS(90 - @LAT) . COS(90 - @LAT)) ) / (SIN(90 - @LAT) . SIN(90 - @LAT)) ) ] + @LONG
Para Latitude: (essa sempre da uns 400m de erro para cada km de distancia fornecido)
- [ ACOS( ( COS(GRAUS_DISTANCIA) - (COS(0 - @ LONG) . COS(0 - @ LONG)) ) / (SIN(0 - @ LONG) . SIN(0 - @LONG)) ) ] + @LAT