Calcular distancia entre cidades  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
Carlos_ds_jar
Virtual Machine Man
[Avatar]

Membro desde: 27/01/2007 15:38:24
Mensagens: 555
Localização: Ceará e Paraíba
Offline

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...

"O Java é capaz de gerar mais soluções e mais problemas do que a nossa 'vã' filosofia é capaz de prever!"
[Email] [MSN]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 25319
Localização: Curitiba/PR
Offline

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/

This message was edited 2 times. Last update was at 22/08/2010 12:43:25


@ViniGodoy - Lattes

Novo no fórum? Leia nosso How to.

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Carlos_ds_jar
Virtual Machine Man
[Avatar]

Membro desde: 27/01/2007 15:38:24
Mensagens: 555
Localização: Ceará e Paraíba
Offline

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...

"O Java é capaz de gerar mais soluções e mais problemas do que a nossa 'vã' filosofia é capaz de prever!"
[Email] [MSN]
garcia-jj
JWizard

Membro desde: 13/04/2009 22:11:50
Mensagens: 2822
Localização: Porto Alegre
Offline

Talvez o gmaps tenha alguma API para isso.

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

http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum.
Carlos_ds_jar
Virtual Machine Man
[Avatar]

Membro desde: 27/01/2007 15:38:24
Mensagens: 555
Localização: Ceará e Paraíba
Offline

Vou dar uma olhada...

"O Java é capaz de gerar mais soluções e mais problemas do que a nossa 'vã' filosofia é capaz de prever!"
[Email] [MSN]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 25319
Localização: Curitiba/PR
Offline

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.

@ViniGodoy - Lattes

Novo no fórum? Leia nosso How to.

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Carlos_ds_jar
Virtual Machine Man
[Avatar]

Membro desde: 27/01/2007 15:38:24
Mensagens: 555
Localização: Ceará e Paraíba
Offline

ViniGodoy wrote: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.

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

"O Java é capaz de gerar mais soluções e mais problemas do que a nossa 'vã' filosofia é capaz de prever!"
[Email] [MSN]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 25319
Localização: Curitiba/PR
Offline

Carlos_ds_jar wrote:
ViniGodoy wrote: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.

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


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).

@ViniGodoy - Lattes

Novo no fórum? Leia nosso How to.

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Carlos_ds_jar
Virtual Machine Man
[Avatar]

Membro desde: 27/01/2007 15:38:24
Mensagens: 555
Localização: Ceará e Paraíba
Offline

ViniGodoy wrote:
Carlos_ds_jar wrote:
ViniGodoy wrote: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.

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


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).

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

"O Java é capaz de gerar mais soluções e mais problemas do que a nossa 'vã' filosofia é capaz de prever!"
[Email] [MSN]
Guevara
GUJ Master
[Avatar]

Membro desde: 24/02/2009 17:56:09
Mensagens: 1024
Offline

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!



Analista de Sistemas e desenvolvedor WEB
http://twitter.com/eguevara2012
[WWW]
Carlos_ds_jar
Virtual Machine Man
[Avatar]

Membro desde: 27/01/2007 15:38:24
Mensagens: 555
Localização: Ceará e Paraíba
Offline

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

"O Java é capaz de gerar mais soluções e mais problemas do que a nossa 'vã' filosofia é capaz de prever!"
[Email] [MSN]
alves.Felipe
GUJ Ranger
[Avatar]

Membro desde: 21/01/2008 13:45:56
Mensagens: 885
Localização: Curitiba - Pr
Offline

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

Felipe Alves
[Email]
diogogama
Virtual Machine Man

Membro desde: 26/03/2012 08:34:40
Mensagens: 500
Offline

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 se pode ensinar nada a um homem; você pode apenas ajudá-lo a encontrar a resposta dentro dele mesmo! (Galileu Galilei)

Curiosidade mata! A ignorância...
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 25319
Localização: Curitiba/PR
Offline

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

@ViniGodoy - Lattes

Novo no fórum? Leia nosso How to.

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
diogogama
Virtual Machine Man

Membro desde: 26/03/2012 08:34:40
Mensagens: 500
Offline

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...

Não se pode ensinar nada a um homem; você pode apenas ajudá-lo a encontrar a resposta dentro dele mesmo! (Galileu Galilei)

Curiosidade mata! A ignorância...
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team