Como calcular a distância entre 2 pontos com latitude e longitude?

Galera,

estou com um problema que é o seguinte tenho um ponto central Latitude_Referencia e Longitude_Referencia, e tenho N outras posições geográficas de determinadas rotas. Por exemplo, tenho várias rotas e cada uma possuem vários pontos(latitude/longitude).

Com base no ponto de referência eu preciso varrer cada rota e determinar qual delas possui o ponto mais próximo e escolher qual a rota mais próxima.

Procurei na net como fazer cálculos de distâncias entre coordenadas geográficas mas não achei uma fórmula, alguém poderia me indicar algum material, link, ou onde consigo a fórmula de cálculo para tal?

Agradeço.

Opa!
Você pode pesquisar sobre Algoritmo Djkstra:



www.dcc.ufmg.br/algoritmos-java/implementacoes-07.php
http://javafree.uol.com.br/artigo/850715/Swing-Algoritmo-de-menor-caminho-Dijkstra.html

Para o calculo de distância geodésica usando latitude e longitude:

Para o cálculo da rota mais curta, use o algorítmo A*, que é bem mais eficiente do que o algorítmo de Dijkstra:
http://www.policyalmanac.org/games/aStarTutorial_port.htm

Pessoal, to com uma dúvida semelhante, porém diferente… rs…

vou tentar explicar…

tenho um setor (retangulo) formado por pontos de latitudes e longitudes de suas extremidades, por exemplo:

latMin = -20.353535
lngMin = -40.383838
latMax = -20.303030
lngMax = -40.353535

ou seja, meu setor será criado tendo os 4 pontos:
latMin, lngMin; latMax, lngMin; latMax, lngMax; latMin, lngMax

eu quero saber como faço pra saber a coordenada de um proximo ponto dada uma distância (vamos usar 500m), exemplo:

P1 = latMin, lngMin;
P2 = latMin, lngMin + 500m;
P3 = latMin, lngMin + 500m + 500m;
.
.
.
Chegou ao máximo que gostaria de ir de latitude então passo pra latitude…
latMin = latMin + 500m;
Pn = latMin, lngMin;
P(n+1) = latMin, lngMin + 500m;
P(n+2) = latMin, lngMin + 500m + 500m;
.
.
.

e assim por diante…

Espero que possam me ajudar, pois não consigo achar essa fórmula.

Atenciosamente,

Diogo Gama

[quote=diogogama]Pessoal, to com uma dúvida semelhante, porém diferente… rs…

vou tentar explicar…

tenho um setor (retangulo) formado por pontos de latitudes e longitudes de suas extremidades, por exemplo:

latMin = -20.353535
lngMin = -40.383838
latMax = -20.303030
lngMax = -40.353535

ou seja, meu setor será criado tendo os 4 pontos:
latMin, lngMin; latMax, lngMin; latMax, lngMax; latMin, lngMax

eu quero saber como faço pra saber a coordenada de um proximo ponto dada uma distância (vamos usar 500m), exemplo:

P1 = latMin, lngMin;
P2 = latMin, lngMin + 500m;
P3 = latMin, lngMin + 500m + 500m;
.
.
.
Chegou ao máximo que gostaria de ir de latitude então passo pra latitude…
latMin = latMin + 500m;
Pn = latMin, lngMin;
P(n+1) = latMin, lngMin + 500m;
P(n+2) = latMin, lngMin + 500m + 500m;
.
.
.

e assim por diante…

Espero que possam me ajudar, pois não consigo achar essa fórmula.

Atenciosamente,

Diogo Gama [/quote]

Colega desenha no papel e usa Geometria Analítica que vai conseguir deduzir a formula facilmente.

[quote=DavidUser][quote=diogogama]Pessoal, to com uma dúvida semelhante, porém diferente… rs…

vou tentar explicar…

tenho um setor (retangulo) formado por pontos de latitudes e longitudes de suas extremidades, por exemplo:

latMin = -20.353535
lngMin = -40.383838
latMax = -20.303030
lngMax = -40.353535

ou seja, meu setor será criado tendo os 4 pontos:
latMin, lngMin; latMax, lngMin; latMax, lngMax; latMin, lngMax

eu quero saber como faço pra saber a coordenada de um proximo ponto dada uma distância (vamos usar 500m), exemplo:

P1 = latMin, lngMin;
P2 = latMin, lngMin + 500m;
P3 = latMin, lngMin + 500m + 500m;
.
.
.
Chegou ao máximo que gostaria de ir de latitude então passo pra latitude…
latMin = latMin + 500m;
Pn = latMin, lngMin;
P(n+1) = latMin, lngMin + 500m;
P(n+2) = latMin, lngMin + 500m + 500m;
.
.
.

e assim por diante…

Espero que possam me ajudar, pois não consigo achar essa fórmula.

Atenciosamente,

Diogo Gama [/quote]

Colega desenha no papel e usa Geometria Analítica que vai conseguir deduzir a formula facilmente.[/quote]

Amigão, me desculpa, mas se não sabe a resposta não precisa responder, mas não fale o que não sabe só pra falar que você pode acabar falando bobeira…

A terra não é redonda, e seus traços nem são uma elipsoide perfeita, portanto preciso saber se alguém sabe um fórmula que calcula isto, especificamente a terra, pois pesquisei e não encontrei…

Mas vi que vc nem fazia idéia disso tmb…

vamos torcer para alguém saber e nos responder…

Vlw…

[quote=diogogama][quote=DavidUser][quote=diogogama]Pessoal, to com uma dúvida semelhante, porém diferente… rs…

vou tentar explicar…

tenho um setor (retangulo) formado por pontos de latitudes e longitudes de suas extremidades, por exemplo:

latMin = -20.353535
lngMin = -40.383838
latMax = -20.303030
lngMax = -40.353535

ou seja, meu setor será criado tendo os 4 pontos:
latMin, lngMin; latMax, lngMin; latMax, lngMax; latMin, lngMax

eu quero saber como faço pra saber a coordenada de um proximo ponto dada uma distância (vamos usar 500m), exemplo:

P1 = latMin, lngMin;
P2 = latMin, lngMin + 500m;
P3 = latMin, lngMin + 500m + 500m;
.
.
.
Chegou ao máximo que gostaria de ir de latitude então passo pra latitude…
latMin = latMin + 500m;
Pn = latMin, lngMin;
P(n+1) = latMin, lngMin + 500m;
P(n+2) = latMin, lngMin + 500m + 500m;
.
.
.

e assim por diante…

Espero que possam me ajudar, pois não consigo achar essa fórmula.

Atenciosamente,

Diogo Gama [/quote]

Colega desenha no papel e usa Geometria Analítica que vai conseguir deduzir a formula facilmente.[/quote]

Amigão, me desculpa, mas se não sabe a resposta não precisa responder, mas não fale o que não sabe só pra falar que você pode acabar falando bobeira…

A terra não é redonda, e seus traços nem são uma elipsoide perfeita, portanto preciso saber se alguém sabe um fórmula que calcula isto, especificamente a terra, pois pesquisei e não encontrei…

Mas vi que vc nem fazia idéia disso tmb…

vamos torcer para alguém saber e nos responder…

Vlw…[/quote]

Me desculpe se pareceu grosseiro, mas não foi minha intenção mesmo…

Vlw…

Seguinte, depende dos requisitos de precisão da sua aplicação assim como o nível de cobertura de cada zona, ainda sim por meio do uso de GA podemos calcular aproximações, para valores exatos e mais fidedignos seria necessário uma análise de relevo de toda a cobertura, assim como uso de mais uma coordenada (altitude), o que em um sistema GPS exige o uso de no mínimo 4 satélites e não um mínimo de 3 para as duas dimensões (latitude e longitude).

Espero que tenha percebido o quão específico é o seu problema, creio que não vai encontrar uma fórmula que não exija mais coeficientes que o que dispõe, ainda pode utilizar métodos de integração para facilitar os cálculos se a natureza do seu problema se tornar complexa.