Estou procurando um algoritmo que, quando for dado um par de latitude e longitude e uma tradução de vetor em metros nas coordenadas cartesianas (x, y), me daria uma nova coordenada. Mais ou menos como um Haversine reverso. Eu também poderia trabalhar com uma transformação de distância e de rumo, mas isso provavelmente seria mais lento e não tão preciso. Idealmente, o algoritmo deve ser rápido, pois estou trabalhando em um sistema incorporado. A precisão não é crítica, pois 10 metros seria bom.
108
Respostas:
Se seus deslocamentos não forem muito grandes (menos de alguns quilômetros) e você não estiver certo nos polos, use a estimativa rápida e suja de que 111.111 metros (111.111 km) na direção y são 1 grau (de latitude) e 111,111 * cos (latitude) metros na direção x é 1 grau (de longitude).
fonte
Como Liedman diz em sua resposta, as fórmulas de aviação da Williams são uma fonte inestimável, e para manter a precisão em 10 metros para deslocamentos de até 1 km, você provavelmente precisará usar os mais complexos.
Mas se você estiver disposto a aceitar erros acima de 10m para pontos compensados acima de aproximadamente 200m, use um cálculo simplificado de terra plana. Eu acho que os erros ainda serão menores que 50m para compensações de até 1km.
Isso deve retornar:
fonte
Acho que o Formulário de Aviação, aqui é ótimo para esses tipos de fórmulas e algoritmos. Para o seu problema, consulte o "lat / long dado radial e distância": aqui
Observe que esse algoritmo pode ser um pouco complexo demais para seu uso, se você quiser manter baixo o uso das funções trigonométricas, etc.
fonte
Pode fazer sentido projetar o argumento primeiro. Você poderia criar algo parecido com este pseudo-código:
onde (x, y) é o deslocamento desejado.
Você não precisa usar utm, qualquer sistema de coordenadas planas que faça sentido em sua área.
Com qual software você está trabalhando?
fonte
Criei um mapa personalizado simples no Google Maps que ilustra o algoritmo de estimativa mencionado pela resposta aceita (1/111111 == um metro). Sinta-se livre para ver e brincar com ele aqui:
https://drive.google.com/open?id=1XWlZ8BM00PIZ4qk43DieoJjcXjK4z7xe&usp=sharing
fonte