Conseguindo o controle da matemática GIS, por onde começo?
Pergunta
Estou encarregado de um programa usado para criar um conjunto de nós e caminhos para consumo por um veículo terrestre autônomo. O programa acompanha os locais de todos os itens em seu mapa, indicando a posição do item como sendo x metros norte e y metros a leste de um ponto de origem de 0,0. No mundo real, o veículo conhece a localização do Lat e Long da origem, pois é determinado por um sistema DGPS e é preciso até alguns centímetros. Meu programa ignora quaisquer coordenadas LAT Long.
É um dos meus objetivos modificar o programa para acompanhar os coordenados de itens Lat Long, além de um ponto de origem e a posição x, y dos itens em relação a essa origem. No início, parece que vou modificar o programa para permitir que os coordenados Lat Long da origem sejam transmitidos e, depois disso, desejo que o programa calcule automaticamente o LAT de cada item atualmente em um mapa. Pelo que pesquisei até agora, acredito que precisarei descobrir a matemática por trás da conversão para coordenados de Lat Long de uma projeção da UTM, onde especifique os pontos de origem e meridianos etc., em oposição ao que já está definido para o UTM.
Eu vim para pedir a vocês programadores GIS, estou no caminho certo? Parece -me que há muito o que envolver, e não tenho certeza se a resposta não é algo tão simples como: "Oh, sim, há uma conversão de metros em Lat Long, aqui"
Atualmente, devido à natureza dos DGPs, o sistema realmente não precisa se preocupar com locais mais do que oh, o que ... 40 km? raio longe da origem. Diante disso, e o fato de eu precisar garantir que o erro nas minhas coordenadas não seja maior que 0,5 metros, preciso de algo mais complexo do que uma constante de conversão LAT/LAT/longa e metros?
Estou com os joelhos em materiais aqui. Eu poderia usar algumas dicas sobre quais conceitos para pesquisar.
Muito obrigado!
Solução
Dado um ponto de partida em Lat/Long e uma distância e rolamento, encontrar o ponto final é um cálculo geodésico. Há um grande resumo dos cálculos e erros geodésicos no Site proj.4. Eles chegam à conclusão de que o uso de um modelo esférico pode obter resultados para distância entre os pontos com mais de 0,51% de erro. Isso, combinado com uma fórmula para traduzir entre WGS-84 e ECEF (Veja as seções "LLA para ECEF" e "ECEF TO LLA", parece que recebe o que você precisa.
Se você quer realmente obter os erros pregados pela projeção inversa do seu mapa plano para o WGS-84, proj.4 é um pacote de software de projeção. Possui código -fonte e vem com três utilitários de linha de comando - proj
, que se converte para/a partir de projeção cartográfica e dados cartesianos; cs2cs
, que converte entre diferentes projeções cartográficas; e geod
, que calcula as relações geodésicas.
O USGS publica um Tratamento muito abrangente das projeções de mapa.
Outras dicas
Eu faria um cálculo completo, se puder. Dessa forma, você sempre será o mais preciso possível.
Se você estiver usando C ++ o Gdal é uma biblioteca muito boa.
Por um intervalo de 40 km, você pode achar que a aproximação do mundo a uma superfície plana 2D pode funcionar, embora uma transformação UTM seja o caminho ideal a seguir - em qualquer caso, eu defenderia o uso das coordenadas WGS84 reais e elipsóides Para cálculos como grande distância do círculo ou cálculo de rolamentos.
Se você ficar entediado, poderá descer uma linha semelhante a algo em que tenho trabalhado, que pode ser usado como uma classe base para dados diferentes, como OSGB36 ou WGS84 ...