Je cherche un algorithme qui, une paire latitude / longitude et une traduction vectorielle en mètres en coordonnées cartésiennes (x, y) me donnerait une nouvelle coordonnée. Un peu comme un Haversine inversé. Je pourrais aussi travailler avec une transformation de distance et de cap, mais cela serait probablement plus lent et moins précis. Idéalement, l'algorithme devrait être rapide car je travaille sur un système embarqué. La précision n'est pas critique, à moins de 10 mètres serait une bonne chose.
108
Réponses:
Si vos déplacements ne sont pas trop importants (moins de quelques kilomètres) et que vous n'êtes pas au niveau des pôles, utilisez l'estimation rapide et grossière selon laquelle 111 111 mètres (111,111 km) dans la direction y est de 1 degré (de latitude) et 111,111 * cos (latitude) mètres dans la direction x est égal à 1 degré (de longitude).
la source
Comme le dit Liedman dans sa réponse, les formules d’aviation de Williams sont une source inestimable. Pour maintenir la précision à moins de 10 mètres des déplacements jusqu’à 1 km, vous devrez probablement utiliser les plus complexes.
Mais si vous êtes prêt à accepter des erreurs supérieures à 10 m pour des points décalés de plus de 200 m environ, vous pouvez utiliser un calcul simplifié de la terre plate. Je pense que les erreurs seront toujours inférieures à 50 m pour des décalages allant jusqu'à 1 km.
Cela devrait retourner:
la source
Je trouve que l' aviation Formulary, ici est idéal pour ces types de formules et d' algorithmes. Pour votre problème, consultez le "lat / long donné radiale et distance": ici
Notez que cet algorithme peut être un peu trop complexe pour votre utilisation, si vous souhaitez limiter l'utilisation des fonctions de trigonométrie, etc.
la source
Il pourrait être judicieux de projeter le point en premier. Vous pouvez faire quelque chose comme ce pseudo-code:
où (x, y) est le décalage souhaité.
Vous n'avez pas besoin d'utiliser utm, aucun système de coordonnées plat qui fait sens dans votre région fera l'affaire.
Avec quel logiciel travaillez-vous?
la source
J'ai créé une carte personnalisée simple sur Google Maps qui illustre l'algorithme d'estimation mentionné par la réponse acceptée (1/111111 == un mètre). N'hésitez pas à voir et à jouer avec ici:
https://drive.google.com/open?id=1XWlZ8BM00PIZ4qk43DieoJjcXjK4z7xe&usp=sharing
la source