Como mapear uma latitude / longitude de um mapa distorcida?

votos
22

I têm um grupo de pares de latitude / longitude que mapeiam para conhecida x / y coordenadas no mapa (geograficamente distorcida).

Então eu tenho par mais uma latitude / longitude. Quero traçá-lo no mapa como melhor é possível. Como faço para ir sobre como fazer isso?

No começo eu decidi criar um sistema de equações lineares para os três pontos long / lat mais próximos e calcular uma transformação destes, mas isso não funciona bem em tudo. Uma vez que é um sistema linear, eu não posso usar os pontos mais próximas também.

Você não pode assumir Norte é: tudo que você tem é as existentes latitude / longo> X / Y mapeamentos.

EDIT: não é uma projeção Mercator, ou qualquer coisa assim. É arbitrariamente distorcida para facilitar a leitura (pense mapa do metrô). Eu quero usar apenas os mais próximos 5 a 10 mapeamentos para que a distorção em outras partes do mapa não afeta o mapeamento Eu estou tentando calcular.

Além disso, o mapa inteiro está em uma área geográfica muito pequena por isso não há necessidade de se preocupar com o mundo - hipóteses de terra plana são bons o suficiente.

Publicado 05/08/2008 em 05:55
fonte usuário
Em outras línguas...                            


4 respostas

votos
8

Existem quaisquer detalhes mais específicos sobre o tipo de distorção? Se, por exemplo, as suas latitudes e longitudes são "distorcidas" em seu mapa 2D usando uma projeção Mercator, a matemática de conversão é facilmente disponível .

Se o mapa é distorcida verdadeiramente arbitrariamente, existem muitas coisas que você poderia tentar, mas o mais simples seria provavelmente para calcular uma média ponderada de seus mapeamentos de pontos existentes. Seus pesos poderia ser o inverso do quadrado da X / Y distância do seu novo ponto para cada um de seus pontos existentes.

Alguns pseudocódigo:

estimate-latitude-longitude (x, y)

    numerator-latitude := 0
    numerator-longitude := 0
    denominator := 0

    for each point,
        deltaX := x - point.x
        deltaY := y - point.y
        distSq := deltaX * deltaX + deltaY * deltaY
        weight := 1 / distSq

        numerator-latitude += weight * point.latitude
        numerator-longitude += weight * point.longitude
        denominator += weight

    return (numerator-latitude / denominator, numerator-longitude / denominator)

Este código vai dar uma aproximação relativamente simples. Se você pode ser mais preciso sobre a maneira como a projeção distorce as coordenadas geográficas, você pode provavelmente fazer muito melhor.

Respondeu 05/08/2008 em 06:48
fonte usuário

votos
2

Bem. De um ponto de vista teórico, dado que a distorção é "arbitrária", e qualquer solução requer que você modelar essa distorção arbitrária, você obviamente não pode obter uma "resposta". No entanto, qualquer solução vai envolver a imposição (geralmente implícita) algum modelo da distorção que podem ou não podem refletir a realidade da situação.

Desde que você parece estar mais interessada em modelos que presumem algum tipo de continuidade local do mapeamento distorção, a escolha mais óbvia é aquela que você já tentou: interpolaton linear entre os pontos mais próximos. Indo além de que vai exigir conhecimentos de análise matemática e numérica mais sofisticado.

Você está incorreto, no entanto, em presumindo que você não pode expandir esse número para mais pontos. Você pode usando uma abordagem de erro menos-quadrado. Encontrar a resposta linear que minimiza o erro dos outros pontos. Esta é provavelmente a extensão mais direta. Em outras palavras, tomar as 5 pontos mais próximos e tentar chegar a uma aproximação linear que minimiza o erro desses pontos. E usar isso. Gostaria de tentar o próximo.

Se isso não funcionar, então a hipótese de linearidade sobre a área de N pontos é quebrado. Nesse ponto, você precisa atualizar, quer um modelo quadrático ou cúbico. A matemática vai ficar agitado nesse ponto.

Respondeu 05/08/2008 em 16:47
fonte usuário

votos
0

Ummm. Talvez eu estou faltando alguma coisa sobre a questão aqui, mas se você tiver informações long / lat, você também tem a direção do norte?

Parece que você precisa mapear coordenadas geodésicas para um sistema de coordenadas projetadas. Por exemplo OSGB para WGS84.

A matemática envolvidos não é trivial, mas o código sai a apenas algumas linhas. Se eu tivesse mais tempo eu ia postar mais, mas eu preciso de um banho por isso vou ser chato e link para a Wikipedia entrada que é muito bom.

Nota: chuveiro post editado.

Respondeu 05/08/2008 em 06:21
fonte usuário

votos
0

o problema é que a esfera pode ser distorcida de várias maneiras, e com todos aqueles pontos conhecidos no equador, vamos dizer, não vai ajudá-lo a mapear pontos mais distantes.

Você precisa de melhores pontos 'próximos', então você pode assumir esses três pontos estão em um avião com o quarto e fazer a interpolação --knowing que a distância das longitudes é uma função, não uma constante.

Respondeu 05/08/2008 em 06:20
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more