Calcular coordenada geográfica por distância

24 respostas
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

24 Respostas

drsmachado

Plano cartesiano?
Álgebra linear?

DavidUser

Considerando a afirmação no outro post que é um calculo de distância sobre a superfície da terra e que as distâncias são consideravelmente grandes, assim como a simplificação de se o globo fosse perfeitamente esférico esse post pode te ajudar:

http://fatosmatematicos.blogspot.com.br/2009/06/distancia-entre-dois-pontos-sobre.html

ps.: essa é uma dúvida matemática e não sobre java avançado, não sei qual seria a melhor área mas esse post deveria ser redirecionado.

diogogama

A questão não é essa Davi.

A distância entre dois pontos eu sei calcular, mas quero o contrário e não to conseguindo…

tenho o ponto A de latitude e longitude e quero saber a latitude e longitude do ponto B sendo que ele tem a mesma longitude e possui uma latitude + 500…

Essa é minha dificuldade…

DavidUser

Parece que você acabou de responder B tem latitude de A + 500 e a mesma longitude de A não entendi a dúvida.

ViniGodoy

diogogama:
A questão não é essa Davi.

A distância entre dois pontos eu sei calcular, mas quero o contrário e não to conseguindo…

tenho o ponto A de latitude e longitude e quero saber a latitude e longitude do ponto B sendo que ele tem a mesma longitude e possui uma latitude + 500…

Essa é minha dificuldade…

Isso é facilmente resolvido com a soma de dois vetores.

Porém, latitudes e longitudes são descritos em coordenadas polares. Para escrever os 500m das coordenadas cartesianas em polares, você vai ter que criar o vetor de deslocamento e fazer a conversão. Só então somar os dois vetores (ou seja, somar lat com lat e long. com long).

E tem mais duas considerações:
a) O uso direto de coordenadas polares vai levar em consideração que o corpo celeste em questão é perfeitamente esférico, o que nem sempre é o caso. No caso da Terra, existe um calculo mais preciso usando coordenadas geodésicas;
b) Nenhum dos dois calculos leva em consideração o relevo. Se quiser levar, é mais difícil.

diogogama

Galera, tentei desenhar o mais explicado possível… imagine o quadrado em anexo sobre um região do globo… eu tenho P1 e suas coordenadas por exemplo são:

Latitude -20.353535
Longitude -40.383838

Eu quero descobrir as coordenadas de P2, P3, P4, etc… todos com uma distância padrão, ou aproximada pelo menos…

Agora acho que conseguem entender para me ajudar.

Vlw.


diogogama

Só pra dizer Vini, não precisa levar em conta o relevo… quero apenas que seja feito ao “nível do mar” digamos assim…

ViniGodoy

diogogama:
Galera, tentei desenhar o mais explicado possível… imagine o quadrado em anexo sobre um região do globo… eu tenho P1 e suas coordenadas por exemplo são:

Latitude -20.353535
Longitude -40.383838

Eu quero descobrir as coordenadas de P2, P3, P4, etc… todos com uma distância padrão, ou aproximada pelo menos…

Agora acho que conseguem entender para me ajudar.

Vlw.

Sim, é só um problema de soma de vetores, como falei.

Eu só ressaltei que você não deixou claro para que lado você vai computar esses metros. O que fez você ir para direita, e não para cima, na diagonal, ou num angulo como 30 graus?

diogogama

é pq vou criar meu setor (que seria aquele quadrado) então irei do primeiro ponto de baixo até o de baixo da direita, depois subiria os 500 metros para cima e faria tudo de novo na linha de cima… entende???

DavidUser

Então você quer criar um patch em torno de toda superfície terrestre?

A questão é a seguinte, a terra tem cerca de 40075 Km, assim para medições de até 10 Km a diferença causada pela trajetória em parábola para uma linear é insignificante (dependendo da precisão necessária).

Agora se realmente quer uma medida precisa isso vai te ajudar:

o raio da terra é aproximadamente 6371 km

diogogama

Galera, eu só queria saber o seguinte, se existia uma formula para que eu calculasse o deslocamento, por exemplo:

P1
Lat: -20.353535
Lng: -40.383838

Quero andar 100 metros pra direita

x = 100 * <calculo - isso que quero saber>

e aí eu somaria a latitude ou longitude.

P2 Seria:
Lat: -20.353535 + x
Lng: -40.383838

quando chegasse ao final eu faria em uma lng acima. Exemplo:

Pn

Lat: -20.353535
Lng: -40.383838 + x

Entenderam???

Obrigado…

diogogama

E sabe como faria para resolver isso Vini???

E

Não existe “andar 100 metros para a direita” e sim “percorrer 100 metros em uma geodésica para leste”.
Obviamente, andar 100 metros para leste depende das suas coordenadas; e dependendo de onde você está (exatamente sobre o pólo norte ou sobre o pólo sul) isso está indefinido.

diogogama

Desculpe “Doutor”, eu quis dizer “percorrer 100 metros em uma geodésica para o leste”… Poxa, ajuda, não atrapalha… Que diferença faz a forma que falei se você entendeu a mensagem???

Vamos tentar nos ater a resolver o problema…

Que polo norte??? que polo sul??? tem nada disso… Acho que está superestimando o problema…

Meu Deus… vou esperar o Vini responder pq acho que ele está me entendendo…

Vlw ae pela ajuda.

diogogama

Tem alguma idéia Vini???

diogogama

Ninguém pode me ajudar???

matheuslmota

diogogama:
Desculpe “Doutor”, eu quis dizer “percorrer 100 metros em uma geodésica para o leste”… Poxa, ajuda, não atrapalha… Que diferença faz a forma que falei se você entendeu a mensagem???

Vamos tentar nos ater a resolver o problema…

Que polo norte??? que polo sul??? tem nada disso… Acho que está superestimando o problema…

Meu Deus… vou esperar o Vini responder pq acho que ele está me entendendo…

Vlw ae pela ajuda.

Boa noite, primeiramente, tenha mais paciência.

Segundo, eu entendi perfeitamente o que você quer fazer. O link que o DavidUser passou sobre o comprimento de arco ajuda a resolver seu problema. Por que é que o entanglement citou o Polo Norte e o Polo Sul? Por que você obviamente precisará definir um referencial pra saber o que é andara para a direita. Suponhamos que duas pessoas A e B estão uma de frente para a outra. Se um objeto que está entre as duas pessoas começa a se mover para o lado, uma pessoa vai está vendo ele se mover para a direita e a outra vai ver ele se mover para a esquerda. Por isso que citaram o Polo Norte.

Terceiro, vou explicar como é que resolve uma versão mais simples do seu problema. No lugar da Terra, pense no circulo abaixo:

Digamos que você quer se mover do ponto A para o ponto B. No percurso você vai andar X metros. Mas vocẽ pode descrever esse percurso em termos do angulo inicial e do angulo final. Veja o link que o DavidUser lhe passou, sobre o calculo do comprimento do arco.
Latitude e longitude são, a grosso modo, uma versão em três dimensões do conceito de angulo. Baseado nisso, voê pode achar a função que você quer, bastando apenas pensar um pouco.
Sugiro vocẽ fazer alguns desenhos pra enteder o problema que está querendo resolver.

diogogama

Pessoal, me desculpem, mas é que aqui no meu trampo só é liberado o fórum do GUJ e para tentar outros links é uma burocracia danada…

Será que existe a possibilidade de me mostrarem por aqui sem eu ter que olhar outros links???

Agradeço.

Ps.: Não estou sem paciência, estou apenas querendo resolver o problema não criar outros… rs…

diogogama

Ninguém???

diogogama

?

diogogama

Galera, vamos expor o problema ao qual estou enfrentando pois alguém pode ter passado e resolvido.

Estou fazendo um projeto com o AppletGeo da Nasa World Wind, porém preciso que ele extraia o relevo de uma lista de coordenadas, ou seja, vou passar um determinado setor e a distância que quero, então terei que pegar a altitude daquele ponto a cada distância escolhida.

Alguém sabe se ele possui uma função assim???

Se não souberem, alguém sabe como posso fazer isso???

Para deixar mais claro ex:

passo um setor com 4 coordenadas que faz um quadrado…
passo um distância de 500 metros por exemplo…
ou seja, dentro do setor, a cada 500 metros, ele me fala qual a altitude.

Aquele abraço…

E

Hum… olhando aqui:

http://builds.worldwind.arc.nasa.gov/worldwind-releases/1.5/docs/api/gov/nasa/worldwind/geom/package-summary.html

Eu vi algo que converte a diferença de duas LatLon (latitude + longitude) em uma distância em radianos, mas não vi algo que seja ao contrário.

diogogama

entanglement:
Hum… olhando aqui:

http://builds.worldwind.arc.nasa.gov/worldwind-releases/1.5/docs/api/gov/nasa/worldwind/geom/package-summary.html

Eu vi algo que converte a diferença de duas LatLon (latitude + longitude) em uma distância em radianos, mas não vi algo que seja ao contrário.

Isso eu tinha visto… rs… é exatamente o contrário o que eu preciso… rs…

ViniGodoy

Sim, tenho, e já descrevi qual é. Você já tentou fazer?
http://www.pontov.com.br/site/arquitetura/54-matematica-e-fisica/132-o-uso-de-vetores-nos-jogos

Criado 4 de junho de 2013
Ultima resposta 14 de jun. de 2013
Respostas 24
Participantes 6