Ich habe eine Linie mit zwei Punkten in Längen- und Breitengrad |
A: 3.222895, 101.719751
B: 3.227511, 101.724318
und 1 Punkt
C: 3.224972, 101.722932
Wie kann ich den minimalen Abstand zwischen Punkt C berechnen und eine Linie besteht aus Punkt A und B? Es ist praktisch, wenn Sie die Berechnung und den Zielcode auch angeben können. Die Entfernung beträgt etwa 89 Meter (mit Lineal in Google Earth).
Danke an mimi und diesen tollen Artikel Ссылка , aber sie geben nicht das ganze Bild . Hier ist ein Detail eins. All diese Punkte werden mithilfe von Google Earth mithilfe von Placemark erfasst, um die Standorte zu markieren. Stellen Sie sicher, dass lat / long in den Voreinstellungen auf Dezimalgrad eingestellt ist.
%Vor% 1. Zuerst musst du die Peilung von A nach C und A nach B finden.
Lagerformel
φ ist die Breite, λ ist die Länge, R ist der Erdradius
2. Finde den Abstand von A nach C unter Verwendung des sphärischen Kosinusgesetzes
%Vor%3. Finden Sie die Cross-Track-Distanz
%Vor%Objective-C-Code
%Vor%Eigentlich gibt es dafür eine Bibliothek. Sie können es hier finden Ссылка
Berechnen Sie die Peilung für jedes: C bis A und C bis B:
%Vor%dLon = lon2-lon1;
Berechnen Sie die Spurweite:
%Vor%R ist der Radius der Erde, dXt ist der Mindestabstand, den Sie berechnen möchten.
Code zur Ausführung dieser Berechnung ist hier hier veröffentlicht. Dies implementiert eine genaue Lösung in Bezug auf ellipsoidische Geodäten. Für die grundlegenden geodätischen Berechnungen können Sie verwenden GeographicLib oder der Port dieser Algorithmen zu C, die in Version 4.9.0 von PROJ.4 . Diese C-Schnittstelle ist hier dokumentiert.
Hier ist das Ergebnis der Kompilierung und Ausführung von intercept.cpp:
%Vor%Die Entfernung zur Linie beträgt 88,743m:
%Vor%Siehe Beitrag hier: Ссылка
Für Entfernungen von einigen tausend Metern würde ich das Problem von Kugel zu Ebene vereinfachen. Dann ist das Problem ziemlich einfach, da eine einfache Dreiecksberechnung verwendet werden kann:
Wir haben die Punkte A und B und suchen nach einer Entfernung X zur Linie AB. Dann:
%Vor%Wenn Sie wissen, wie Sie die Entfernung von zwei Punkten berechnen, erhalten Sie die Abstände zwischen zwei Punkten, erhalten Sie AB, AC und BC. Sie möchten den kürzesten Abstand zwischen Punkt C und der Linie AB wissen.
Erhalte zuerst den Wert von P
%Vor%Mit P musst du S bekommen
%Vor%SQRT bedeutet Quadratwurzel. Dann bekommst du was du willst von
%Vor%Tags und Links objective-c xcode map latitude-longitude distance