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…
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/
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…
Vou dar uma olhada…
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.
[quote=ViniGodoy]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.[/quote]
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 :?:
[quote=Carlos_ds_jar][quote=ViniGodoy]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.[/quote]
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 :?: [/quote]
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).
[quote=ViniGodoy][quote=Carlos_ds_jar][quote=ViniGodoy]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.[/quote]
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 :?: [/quote]
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).[/quote]
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
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!
Se puder dar um exemplo de código de como se faz isso eu fico muito agradecido!
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.
vlw…
abraco
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
Não entendi o problema. Dá para descrever o objetivo disso ou desenhar?
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…
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.