So berechnen Sie den Abstand von einem Punkt auf eine Strecke, auf einer Kugel?
Ich habe eine Strecke (great circle Teil) auf der Erde. Die Strecke ist definiert durch die Koordinaten der enden. Natürlich, zwei Punkte definieren zwei Liniensegmente, so nehme an, ich interessiere mich für die kürzere.
Ich bin da ein Dritter Punkt, und ich bin auf der Suche nach der (kürzeste) Abstand zwischen der Linie und dem Punkt.
Alle Koordinaten sind in Länge\Breite (WGS 84).
Wie berechne ich die Entfernung?
Einer Lösung in jede vernünftige Programmiersprache zu tun.
Bare im Hinterkopf, dass die Erde, und die WGS84-system entwickelt, um Ungefähre, nicht eine Sphäre - so die Berechnungen basieren auf der Annahme, dass meine ungenauen
Ich weiß nicht, warum jemand würde davon ausgehen, Hausaufgaben...ich beschäftige mich mit Punkten auf einer kugelförmigen Annäherung der Erde an die Arbeit. In der Tat war es einer vorherigen mini-Projekt von mir...
Manchmal wünschte ich, ich waren noch bei den Hausaufgaben Bühne. Dies ist jedoch völlig arbeiten. Zu Hause noch etwa zwei Stunden entfernt.
Irgendwie beleidigenden Kommentar über Hausaufgaben. Man bräuchte mindestens 2 oder 3 Semester Mathe-major Lehrplan von einem top-notch-Universität, dies zu behandeln. Vielleicht Lazarus absolvierte MIT vom Alter 20?
Für die kürzere Distanz tun, Vereinfachung finden Sie unter: stackoverflow.com/questions/20231258/...
Ich weiß nicht, warum jemand würde davon ausgehen, Hausaufgaben...ich beschäftige mich mit Punkten auf einer kugelförmigen Annäherung der Erde an die Arbeit. In der Tat war es einer vorherigen mini-Projekt von mir...
Manchmal wünschte ich, ich waren noch bei den Hausaufgaben Bühne. Dies ist jedoch völlig arbeiten. Zu Hause noch etwa zwei Stunden entfernt.
Irgendwie beleidigenden Kommentar über Hausaufgaben. Man bräuchte mindestens 2 oder 3 Semester Mathe-major Lehrplan von einem top-notch-Universität, dies zu behandeln. Vielleicht Lazarus absolvierte MIT vom Alter 20?
Für die kürzere Distanz tun, Vereinfachung finden Sie unter: stackoverflow.com/questions/20231258/...
InformationsquelleAutor daphshez | 2009-08-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist meine eigene Lösung, basierend auf der Idee, in ask Dr. Math. Ich würde mich freuen, zu sehen, dass Ihr feedback.
Disclaimer zuerst. Diese Lösung ist die richtige für Kugeln. Die Erde ist keine Kugel und die Koordinaten-system (WGS-84) nicht davon ausgehen, es ist eine Sphäre. Dies ist also nur eine Annäherung, und ich kann nicht wirklich einschätzen error. Auch bei sehr kleinen Entfernungen ist es wahrscheinlich auch möglich, sich mit guter Näherung durch die Annahme, alles ist nur eine koplanare. Wieder weiß ich nicht, wie "klein" die Abstände zu sein haben.
Nun zum Geschäft. Ich rufe den enden der Linien A,B und der Dritte Punkt C. im Grunde, der Algorithmus ist:
Berechnen Sie T, der Punkt auf der Linie AB, die am nächsten ist, um C, mit den folgenden 3 Vektor-Produkte:
G = A x B
F = C x G
T = G x F
Normalisieren T und multipliziert mit dem radius der Erde.
Diese Schritte sind genug, wenn Sie sind auf der Suche für den Abstand zwischen C und der große Kreis, definiert durch A und B. Wenn, wie mir, Sie sind daran interessiert, den Abstand zwischen C und der kürzeren Strecke, die Sie benötigen, um den zusätzlichen Schritt der Feststellung, dass T in der Tat auf dieses segment. Wenn nicht, dann unbedingt der nächste Punkt ist, eines der enden A oder B - der einfachste Weg ist es, zu überprüfen, welche.
Im Allgemeinen, ist die Idee hinter den drei Vektor-Produkte ist die folgende. Der erste (G) gibt uns das Flugzeug des großen Kreises von A und B (also die Ebene mit A,B und den Ursprung). Der zweite (F) gibt uns der große Kreis geht durch C und steht senkrecht auf G. Dann ist T ist der Schnittpunkt der großkreise definiert durch F und G, gebracht, um die richtige Länge durch Normalisierung und Multiplikation von R.
Hier teilweise Java-code, es zu tun.
Finden der nächstgelegenen Punkt des großen Kreises. Die Eingänge und der Ausgang sind Länge-2 arrays. Die intermediate-arrays der Länge 3.
Finden der nächstgelegenen Punkt auf dem segment:
Dies ist eine einfache Methode der Prüfung, ob der Punkt T, von denen wir wissen, auf demselben großen Kreis als A und B, ist auf das kürzere segment dieses großen Kreis. Allerdings gibt es effizientere Methoden, es zu tun:
Vielen Dank, genau das was ich brauchte. Die T ist auf Kleinere Arc-segment-code war das, was mir fehlte. Dave.
Es scheint mir, dass die Zeile "return (distance(a,c) < Abstand(b,c)) ? a : c;" sollte "return (distance(a,c) < Abstand(b,c)) ? a : b;"
ich wünschte es gibt ein Beispiel mit einfachen zahlen
Ein alternativer Ansatz, um zu bestimmen, ob T auf dem Pfad von A nach B: Angenommen, A,B,T sind 3d-Vektoren und Sie liegen alle in einer Ebene(Dies wird garantiert durch den Bau des T). T ist zwischen A und B, wenn und nur wenn (AT > AB und BT > AB). Hier * ist der Punkt-Produkt. Motivation:T der Cosinus des Winkels zwischen A und T. Der Winkel zwischen A und T muss kleiner sein als der Winkel zwischen A und B. Da der Cosinus ist streng monoton abnehmend, von 0 bis Pi dies führt zu Einer - T >B. Das Verhältnis B - T > A*B ist ähnlich motiviert.
InformationsquelleAutor daphshez
Versuchen Abstand von einem Punkt zu einem Großen Kreis, von Ask Dr. Math. Sie müssen noch eine Transformation der Längen - /Breitengrad, um sphärische Koordinaten und Maßstab für die Erde hat einen radius, aber das scheint wie eine gute Richtung.
InformationsquelleAutor Yuval F
Dies ist der vollständige code für die akzeptierte Antwort, als ideone Geige (gefunden hier):
Es funktioniert gut für kommentierte Daten:
Nächste Knoten ist: 50.17493121381319,19.05846668493702
Aber ich habe ein problem mit diesen Daten:
Nächste Knoten ist: 52.00834987257176,17.542691313436357 falsch ist.
Ich denke, dass die Linie durch zwei Punkte ist nicht ein abgeschlossener Bereich.
InformationsquelleAutor loleksy
Wenn jemand Sie braucht es ist dies loleksy Antwort Portierung auf c#
InformationsquelleAutor Dedalo
Für Entfernung bis zu ein paar tausend Meter würde ich vereinfachen das Problem aus der Sphäre in die Ebene.
Dann, die Frage ist ziemlich einfach, wie eine einfache Dreieck-Berechnung verwendet werden können:
Wir haben die Punkte A und B anzusehen und den Abstand X zu der Linie AB. Dann:
InformationsquelleAutor Martin Koubek
Die kürzeste Entfernung zwischen zwei Punkten auf einer Kugeloberfläche ist der kleinere Seite der großen Kreis, der durch die beiden Punkte. Ich bin sicher, dass Sie das bereits wissen. Es ist eine ähnliche Frage hier http://www.physicsforums.com/archive/index.php/t-178252.html, dass kann Ihnen helfen, Modell mathmatically.
Ich bin mir nicht sicher, wie wahrscheinlich Sie sind zu erhalten ein kodiertes Beispiel von diesem, um ehrlich zu sein.
Ich verstehe, dass. Ich habe einfach die definition von die kürzeste Entfernung zwischen zwei Punkten auf einer Kugel, zusammen mit einem link, um irgendwo zu Fragen, die gleiche Frage aus einer mathematischen Sicht. Ich bin nicht dafür, eine Antwort auf die Frage 🙂
InformationsquelleAutor Jimmeh
Ich bin im Grunde auf der Suche für die gleiche Sache, gerade jetzt, außer, dass ich streng genommen kümmern sich nicht darum, dass ein segment des großen Kreises, sondern wollen einfach nur die Entfernung zu einem beliebigen Punkt auf dem Kreis.
Beiden links bin ich derzeit:
Auf dieser Seite erwähnt, "Cross track distance", die im Grunde das zu sein scheint was du suchst.
Auch in dem folgenden thread auf der PostGIS-mailing-Liste, wird der Versuch scheint zu (1) bestimmen Sie den nächstgelegenen Punkt auf dem Großkreis mit der gleichen Formel wie bei der line-Abstand auf eine 2D-Ebene (mit PostGIS' line_locate_point), und dann (2) Berechnung der Entfernung zwischen diesem und der Dritte Punkt auf einem Sphäroid. Ich habe keine Ahnung, ob das mathematisch in Schritt (1) ist richtig, aber ich würde überrascht sein.
http://postgis.refractions.net/pipermail/postgis-users/2009-July/023903.html
Endlich, ich habe gerade gesehen, dass die mit einem Link unter "Verwandte":
Abstand von Punkt Zu Linie große Kreis-Funktion nicht richtig arbeitet.
InformationsquelleAutor