Converter Latitude / Longitude em coordenadas X,Y

Mensagem
Autor
rogergomes
Mensagens: 4
Registrado em: 11 Abr 2010, 06:58

Converter Latitude / Longitude em coordenadas X,Y

#1 Mensagem por rogergomes »

PessoALL, Olá !

Sou novato no site. E estou enveredando pelos caminhos do GPS...

E gostaria da ajuda da equipe de desenvolvedores. Estou fazendo uma aplicação que pega o arquivo gerado pelo tracksource(txt -> coordenadas em graus decimais) e estou querendo converter esta coordenada em ponto X,Y na tela do sistema.

Andei dando uma pesquisada... li sobre projeção, mas está faltando a parte de cálculos. Sempre que os executo, não sai muito parecido com a imagem que gerei.

Gostaria de saber de vocês se existe algum cálculo que posso executar para converter Lat/Lon em posição X,Y.

Desde já, obrigado.



Avatar do usuário
Schmidt
Mensagens: 144
Registrado em: 27 Out 2008, 08:15
Localização: Rio de Janeiro
Contato:

Re: Converter Latitude / Longitude em coordenadas X,Y

#2 Mensagem por Schmidt »

Por acaso X,Y seriam as coordenadas da tela em pixels?
Caso seja, onde seria a origem 0,0? No canto superior esquerdo?


nüvi 780 - Oregon 450

rogergomes
Mensagens: 4
Registrado em: 11 Abr 2010, 06:58

Re: Converter Latitude / Longitude em coordenadas X,Y

#3 Mensagem por rogergomes »

Olá Schmidt,

X e Y são as coordenadas da tela e 0,0 estão no canto superior esquerdo.

Obrigado pelo retorno.



Avatar do usuário
Schmidt
Mensagens: 144
Registrado em: 27 Out 2008, 08:15
Localização: Rio de Janeiro
Contato:

Re: Converter Latitude / Longitude em coordenadas X,Y

#4 Mensagem por Schmidt »

No fundo é só usar regra de 3, para a longitude é direto pois ela cresce na mesma direção das coordenadas de tela e para a latitude é só refletir pois ele cresce no sentido inverso as coordenadas de tela:

variáveis:
max_Lat -> Latitude máxima da sua área de desenho
min_Lat -> Latitude mínima da sua área de desenho
max_Lon -> Longitude máxima da sua área de desenho
min_Lon -> Longitude mínima da sua área de desenho

max_hPixel -> Maior valor em pixel na vertical da tela (canto inferior)
max_wPixel -> Maior valor em pixel na horizontal da tela (canto direito)

Lon -> Valor do ponto em Longitude
Lat -> Valor do ponto em Latitude
xPixel -> Valor do ponto em pixel vertical
yPixel -> Valor do ponto em pixel horizontal

cálculos auxiliares:
hCoord = max_Lat - min_Lat
wCoord = max_Lon - min_Lon

cálculos de coordenadas para pixel:
xPixel = max_wPixel * (Lon - min_Lon)/wCoord
yPixel = max_hPixel * (1 - (Lat - min_Lat)/hCoord)

cálculos de pixel para coordenadas:
Lon = min_Lon + wCoord * xPixel/max_wPixel
Lat = min_Lat + hCoord * (1 - yPixel/max_hPixel)

Você vai precisar tomar alguns cuidados, pois as corrdenadas de tela são números inteiros e as corrdenadas geográficas são números reais. Talvez você precise melhorar as equações com floor e ceiling. Na Wikipedia tem um artigo legal: http://en.wikipedia.org/wiki/Linear_map

Como não testei, se tiver algum erro me avise.
[]'s


nüvi 780 - Oregon 450

rogergomes
Mensagens: 4
Registrado em: 11 Abr 2010, 06:58

Re: Converter Latitude / Longitude em coordenadas X,Y

#5 Mensagem por rogergomes »

Ok. Obrigado. Irei analisar e retorno.

10ks.



rogergomes
Mensagens: 4
Registrado em: 11 Abr 2010, 06:58

Re: Converter Latitude / Longitude em coordenadas X,Y

#6 Mensagem por rogergomes »

Schmidt, um probleminha encontrado...

se tenho a longitude -18.672254 e -18.684288, se utilizar a função para arredondar, vai retornar, -18 e -18. Isto é, o mesmo ponto na tela.

Teria que ter uma função que fizesse esse retornasse uma diferença de acordo com a resolução da tela a ser utilizada pois depende da quantidade de pixel existente na resolução utilizada.

Então, se não tiver essa função, o gráfico deverá perder algumas informações.

Você saberia me informar como resolver este ?

10ks.

Abraços



Avatar do usuário
Schmidt
Mensagens: 144
Registrado em: 27 Out 2008, 08:15
Localização: Rio de Janeiro
Contato:

Re: Converter Latitude / Longitude em coordenadas X,Y

#7 Mensagem por Schmidt »

Olá amigo, não é pra fazer arredondamento direto nas coordenadas, você entendeu o significado de todas as variáveis que coloquei acima?
Quanto a resolução, nas equações acima já existem variáveis prevendo a resolução da tela ( max_hPixel, max_wPixel ).

ex:
Supondo a coordenada (-22.90237, -43.20236), uma janela de latitude de -25.0 até -20.0 e uma janela de longitude de -45.0 até -40.0.
Supondo a resolução de 1024 x 768

De acordo com as equações:

hCoord = -20.0 - (-25.0) = 5.0
wCoord = -40.0 - (-45.5) = 5.0

xPixel = 1024 * (-43.20236 - (-45.0)) / 5.0 = 368.156672
yPixel = 768 * (1 - (-22.90237 - (-25.0)) / 5.0) = 445.804032

Esse resultado que você deve arredondar, pois não existe pixel fracionário. Então o resultado é: (X=368; Y=446)


nüvi 780 - Oregon 450

Responder Exibir tópico anteriorExibir próximo tópico

Voltar para “GPS TrackMaker”