Je veux trouver un point de latitude et de longitude étant donné un relèvement, une distance et une latitude et une longitude de départ.
Cela semble être le contraire de cette question ( distance entre les points lat / long ).
J'ai déjà examiné la formule d'Hversine et pense que son approximation du monde est probablement assez proche.
Je suppose que je dois résoudre la formule de haversine pour mon lat / long inconnu, est-ce correct? Existe-t-il de bons sites Web qui parlent de ce genre de chose? Cela semble être courant, mais ma recherche sur Google n'a posé que des questions semblables à celle ci-dessus.
Ce que je recherche vraiment n’est qu’une formule pour cela. J'aimerais lui donner un point de départ, un relèvement et une distance (milles ou kilomètres) et j'aimerais en sortir une paire de points qui représente le lieu où l'on se serait retrouvé cette route.
la source
Réponses:
Je serais curieux de savoir comment les résultats de cette formule se comparent à pe.dll d' Esri .
( citation ).
Voici une page HTML pour les tests .
la source
Si vous étiez dans un plan, le point est r mètres à un palier d' un degrés à l' est du nord est déplacé par r * cos (a) dans la direction du nord et r * sin (a) dans la direction est. (Ces déclarations définissent plus ou moins le sinus et le cosinus.)
Bien que vous ne soyez pas dans un avion (vous travaillez à la surface d'un ellipsoïde incurvé qui modélise la surface de la Terre), toute distance inférieure à quelques centaines de kilomètres couvre une si petite partie de la surface que, dans la plupart des cas, elle peut être considéré comme plat. La seule complication qui reste est qu'un degré de longitude ne couvre pas la même distance qu'un degré de latitude. Dans un modèle terrestre sphérique, un degré de longitude est seulement cos (latitude) aussi longtemps qu'un degré de latitude. (Dans un modèle ellipsoïdal, il s'agit toujours d'une excellente approximation, bonne à environ 2,5 chiffres significatifs.)
Enfin, un degré de latitude correspond à environ 10 ^ 7/90 = 111 111 mètres. Nous avons maintenant toutes les informations nécessaires pour convertir les mètres en degrés:
Le déplacement vers le nord est r * cos (a) / 111111 degrés;
Le déplacement vers l' est est r * sin (a) / cos (latitude) / 111111 degrés.
Par exemple, à une latitude de -0,31399 degrés et un cap a = 30 degrés nord-est, nous pouvons calculer
De là, à partir de (-78,4437, -0,31399), le nouvel emplacement est situé à (-78,4437 + 0,00045, -0,31399 + 0,0007794) = (-78,4432, -0,313211).
Une réponse plus précise, dans le système de référence ITRF00 moderne, est (-78,4433, -0,313207): elle se situe à 0,43 mètre de la réponse approximative, ce qui indique que l’approximation est erronée de 0,43% dans ce cas. Pour obtenir une précision supérieure, vous devez utiliser une formule de distance ellipsoïdale (beaucoup plus compliquée) ou une projection conforme haute fidélité avec divergence nulle (pour que le relèvement soit correct).
la source
Si vous avez besoin d'une solution JavaScript, tenez compte de ces éléments
functions
et de ce violon :Donc, si vous voulez calculer une nouvelle coordonnée, cela peut ressembler à:
la source
Je travaille dans ObjectiveC. La clé ici est de savoir que vous avez besoin de points de lat / lng en radians et que vous devez les reconvertir en lat / lng après l’application de l’équation. Sachez également que la distance et tc sont exprimés en radians.
Voici l'équation originale:
Ici, il est implémenté dans ObjC où radian est un radian mesuré dans le sens anti-horaire à partir de N (par exemple, PI / 2 est W, PI est S, 2 PI / 3 est E) et la distance est en kilomètres.
la source
Si vous êtes intéressé par une meilleure précision, il y a Vincenty . (Lien est à la forme «directe», qui est exactement ce que vous recherchez).
Il y a pas mal d'implémentations existantes, si vous voulez du code.
En outre, une question: vous ne supposez pas que le voyageur conserve le même cap pendant tout le voyage, n'est-ce pas? Si tel est le cas, ces méthodes ne répondent pas à la bonne question. (Vous feriez mieux de projeter sur mercator, de tracer une ligne droite, puis de projeter le résultat.)
la source
Voici une solution Python:
la source
J'utilise l'approche décrite ci-dessous pour déterminer la coordonnée suivante en fonction du relèvement et de la distance par rapport à la coordonnée précédente. J'ai un problème de précision avec une autre approche que je lis sur Internet.
J'utilise ceci pour déterminer la superficie de la terre, qui est un polygone, et trace ce polygone dans Google Earth. Un titre foncier a des relèvements et des distances écrits de cette manière: "NordOuSud x degrés y minutes EstOuOuest, z mètres au point n;".
Donc, en partant des coordonnées données du point de référence, je calcule d’abord la distance par degré de latitude et de longitude en utilisant la formule de haversine car elle varie en fonction de l’emplacement. Ensuite, je détermine la coordonnée suivante à partir des formules de trigonométrie sinus et cosinus.
Voici le javascript:
la source