GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Calcular distancia entre cidades


#1

Ola galera gostaria de saber se existe algum método prático para calcular a distancia entre duas cidades, desde já agradeço a ajuda...


#2

Que tipo de distância? E como você representa as cidades?

Se você representa a cidades por pontos num eixo cartesiano e só quer achar a distância linear entre elas, então, o teorema de pitágoras pode resolver facilmente o seu problema.

Se você tem as cidades ligadas entre si num grafo, onde as arestas são as cidades e as linhas do grafo as estradas, e quer achar a menos distância a ser percorrida pelo carro, então você deve usar o algoritmo do A* para localizar o menor caminho, para só então fazer uma soma de todas as arestas. E ali você terá a distância.

Se você tem coordenadas polares (como os graus sobre a superfície terrestre) e pretende achar a distância geodésica, aí a fórmula é:

Cuidado que o resultado acima é dado em radianos e deve ser multiplicado aproximadamente por 6367,43km.

Esse site explica melhor o processo de cálculo: http://obsn3.on.br/~jlkm/geopath/


#3

caro vini, fico muito agradecido pela elaborada resposta, mas não é bem isso que eu queria, estou fazendo uma aplicação onde um dos requisitos é o calculo de distancias entre duas cidades tendo como entrada somente os seus nomes e respectivos estados.
Nesse contexto, gostaria de saber se existe alguma API em java ou algum web service ou qualquer outra coisa que possa me ajudar a solucionar o problema, desde já agradeço...


#4

Talvez o gmaps tenha alguma API para isso.

http://code.google.com/apis/maps/index.html


#5

Vou dar uma olhada...


#6

Mas você precisa da distância rodoviária?
No caso da distância geodésica (que é usada pra calcular tarifa telefônica, por exemplo), você pode obter a coordenada de todas as cidades do Brasil no site do governo.


#7

O mais interessante seria realmente a distancia rodoviária, mas de qualquer maneira gostaria de saber qual é o site do governo que dispõe desse tipo de informação e como eu poderia calcular a distância geodésica me baseando nela :?:


#8

Um deles é o próprio IBGE: http://www.ibge.gov.br/home/disseminacao/online/catalogo2/digitaltema.php?tema=Geodesia&pagatual=inicio
O site que eu passei ensina a calcular a distância (é aquela formulazinha ali, não é tão complicada quanto parece).


#9

Realmente é uma boa alternativa, só que preciso dar uma boa revisada em alguns conceitos de matemática, para que obtenha a confiança necessária para implementar tal funcionalidade.

Enquanto à distancia rodoviária eu acreditava que fosse um pouco mais fácil encontrar algo como um web service gratuito do governo que facilitasse um pouco mais a vida...

Mais uma vez obrigado pela atenção e informação concedida :smiley:


#10

Olá!
Dá pra implementar com a API Geocoding, confere aí a documentação:
http://code.google.com/intl/pt-BR/apis/maps/documentation/geocoding/

Você pode fazer com coordenadas ou com os dados que tiver no banco, eu aqui tô contatenando as strings, recebendo na JSP e alimentando uma variável em javascript para a API encontrar o endereço.

Abraço!


#11

Se puder dar um exemplo de código de como se faz isso eu fico muito agradecido!


#12

iae Carlos_ds_jar , blz?!
cara, vc chegou numa conclusão da melhor forma de fazer esse cálculo?
vou precisar fazer a mesma coisa. :smiley:

vlw..
abraco


#13

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


#14

Não entendi o problema. Dá para descrever o objetivo disso ou desenhar?


#15

Ok Vini, deixe tentar explicar...

Estou trabalhando com o appletGeo da Nasa, eu fiz um método que captura um setor. Um setor é composto por uma interseção de pontos, por exemplo:

Setor:

P1
Latitude Minima = -20,323232
Longitude Minima = -40,353535

P2
Latitude Minima = -20,323232
Longitude Maxima = -40,300000

P3
Latitude Maxima = -20,292929
Longitude Maxima = -40,300000

P4
Latitude Maxima = -20,292929
Longitude Minima = -40,353535

Note que esses quatro pontos formam um retangulo. E dentro deste retangulo existe várias coordenadas, ok???

Eu consigo calcular a distância entre um ponto e outro, porém o que preciso é o inverso, eu tenho uma distância e preciso saber as próximas coordenadas...

Ex.: Quero pegar as coordenadas de 500 em 500 metros...

P1
Latitude Minima = -20,323232
Longitude Minima = -40,353535

P1 + 500m vai ser igual a:
Latitude Minima = -20,323232
Longitude Minima = -40,353535 + (aqui entrará a quantidade de coordenadas que terei de somar para dar 500 metros)

e assim por diante até chegar ao limite do setor e aí eu somo a coordenada de latitude e começo tudo de novo com a longitude.

Consegui explicar agora???

Aguardo retorno, valeu...


#16

Mas você tem um angulo? Pois só com uma distância, não dá para saber para que lado calcular o deslocamento.

De qualquer forma, dê uma olhada em vetores e em coordenadas polares.

E outra... não fique pegando carona nos tópicos dos outros, principalmente pq vc já abriu o seu.


#17