Abstand eines Punktes von einer Gerade im Raum

Hallo Zusammen :slight_smile:

Ich habe mal eine Rechenfragen.

Ich möchte den Abstand eines Punktes zu einer Gerade zwischen zwei weiteren Punkten auf der Karte errechnen. Die Erdkrümmung kann für die Abstände ignoriert werden, so dass wir uns im 2D/2R Bereich bewegen können, da die Abstände nur im Meter bis wenige KM Bereich sein sollten für meine Zwecke. Die allgemeine Berechnung vom Punktabstand zu einer Gerade über die Hessische Normalenform ist soweit klar und funktioniert auch für Daten eines normalen Koordinatensystems. Doch wie kann ich nun mit den Lat/Lon Daten in Bezug auf P(x|y) arbeiten um dies für mich zu nutzen?

Mein erster Versuch war einfach Lat als X und Lon als Y anzunehmen … doch die Abstände die dabei rauskommen sagen mir nichts. Wenn ich z.B. folgende 3 Punkte nehme (X = Lat & Y = Lon)

kommt folgendes raus:

Doch mit 0.0042285006644673 kann ich jetzt gerade nichts anfangen bzw. die müssen doch noch irgendwie umgerechnet werden um auf Meter bzw. Kilometer zu kommen oder? Ich stehe gerade ein wenig auf dem Schlauch ob ich jetzt nur noch d * Faktor nehmen muss um auf den Abstand in m bzw. km zu kommen oder ist der Ansatz einfach X = Lat & Y = Lon zu setzen selber schon komplett falsch?

Ich danke schonmal für jede Antwort / Hilfe die kommt :slight_smile:

Klassischer Fall von “Garbage in, Garbage out” bzw. es kommt nur das raus, was man reinsteckt. Schau dir mal die drei Koordinatenpaare an und erkläre uns, wo diese Punkte auf der Erde liegen sollen.

Bei klassischen Koordinaten ist es näherungsweise so, das der Abstand zweier Breitengrade (Lat) 111.1 km beträgt, weil der Abstand von Äquator zu Nordpols mal als 10000 Kilometer definiert wurde. Bei den Längengraden (Lon) ist es komplizierter. Der Erdumfang von ca. 42000km ergibt, dass der Abstand zweier Längengrad am Äquator 116,6 km beträgt. Je weiter nach Norden man sich begibt, desto geringer wird der Abstand, der bei den Polen auf Null schrumpft. Wenn man sich in Deutschland auf 49° Breite befindet, beträgt der Abstand zwischen zwei Längengraden ca. 76 Kilometer. Und irgendwo bei 18° Breite ist der Abstand zwischen Längengraden gerade so groß wie der zwischen Breitengraden.

Der Erdumfang von ca. 42000km ergibt.

Oh, das wär mir jetzt neu :wink:

Ciao,
Frank

Ja, er ist komplett falsch.

Aus den Lat/Lon-Abstaenden kann man sich X-Y-Abstaende ausrechnen (was aber eine Nummer aufwendiger ist, als einfach mit einem Faktor zu multiplizieren, Google kann die dazu weiter helfen z.b. mit “geokoordinaten abstand”). Mit diesen X-Y-Werten kannst du dann deine gewohnte Abstandsrechnung anschmeissen.

Gruss
Torsten

Hi!

Also die Datenpaare habe ich durch klicken auf eine Karte mitten im Nirgendwo erfahren, ich habe nun mal 3 Datenpaar aus dem Raum Münster genommen:

Und bekomme:

Also auch nicht viel genauer / besser, aber bei der Überlegung kam mir folgende Idee.

Ich habe die Funktion um die Abstände zwischen zwei festen Punkten in Metern zu Errechnen / Bekommen. Damit könnte ich ja jeweils die Längen zwischen A, B & C errechnen und das über den Höhensatz im Dreieck machen … nur wäre mir eine einfachere Rechnung über die Hessische Normalenform im R2 lieber, weil Sie einfacher & kürzer ist, wenn man die passenden / richtigen Koordinaten hat.

Aber ich vermute mal der Ansatz mit dem Dreicke und dem Höhensatz dürfte noch die genausten Ergebnisse geben oder?

Da es ihm nicht auf hohe Genauigkeit ankommt, und er sich maximal im Bereich 10 km bewegt, sollte es reichen
X=lon / 360 * 40000 * cos(lat * pi / 180) km
Y= lat / 360 * 40000 km
zu rechnen.

Das hört sich gut an … ja die Genauigkeit ist zweitrangig da der Bereich in dem ich mich Befinde eher im 3 bis 4 km Radius sein soll. Ich suche mir gleich mal Punkte die näher zusammen sind und versuche es mit Deiner Umrechung chris, danke dafür!

Also ich habe damit nun die genannten Punkte gerechnet, hier die komplette Formel:

Das Ergebnis sagt mir:

Da Du sagtest die Werte sind in KM, muss das Ergebniss ja auch in KM sein … und ich glaube nicht dass es 8000km sein können, denn die Punkte waren so im ~20km Radius.

Und dann habe ich Punkte genommen innerhalb eines 1km Radius und hatte als Abstand 7203 … und das passt wohl auch nicht ganz. Vielleicht was an der Umrechnung falsch?

Was bekommst Du denn als Abstand p1 zu p2, da muss 25,71… rauskommen (fizzycalc sagt 25,127 km).

Ich habe geade bei den Variablen nochmal alles überprüft und nun folgende Daten:

Und nun erhalte ich:

Und jetzt könnte 13km ja hinkommen bei den Werten aus dem großen Radius … ich nehme nochmal bewusste werte innerhalb eines 1km Radius und melde mich wieder :slight_smile:

Die Abstandsrechnung kommt über meine Funktion die die Erdkrümmung, Radius usw. berücksichtig (die lange mit acos, sin usw ;))

Habe nun mal Werte aus dem Nahen Umfeld genommen und folgendes raus:

Und die knapp 300m sind auf jedenfall realistisch bzw. “Nah genug dran” für meine Zwecke. Zur Gegenprobe könnte ich jetzt ja noch den Höhensatz im Dreieck nehmen unter Berücksichtigung der Abstände für P1/P2/P3, aber der Blick auf die Karte bzw. Straße und die Angabe 300Meter reicht mir als Bestätigung das diese Umrechnung gut arbeitet. Ich danke Dir dafür, hast mir sehr geholfen!

Und um das Thema OSM nun richtig abzuschließen werde ich mal nen eigenen Kartenserver/Titleserver aufsetzen. Ich habe eine “Forumsuserkarte” auf Basis von Google Maps erstellt und möchte diese auf OSM umstellen … und deswegen werde ich dafür auch nen eigenen Karten/Titleserver aufsetzen um die OSM Server zu entlasten, da dieses Plugin auf ein paar Forensystemen laufen soll/wird, und da kann man ja auch den Traffic auf diese Server umlegen bzw. da die alle von einem Betreiber sind auf seinen Server ;).

Danke für die Hilfe, es ist eine tolle Community hier! Und wenn das Projekt mit dem Server usw. fertig ist, werde ich mir die Karten meines Wohngebietes mal genauer anschauen wo man taggen & helfen könnte :slight_smile:

Ich hatte geschrieben: “Der Erdumfang von ca. 42000km ergibt, dass der Abstand zweier Längengrad am Äquator 116,6 km beträgt.”
Was ist dein Problem damit?

Die Erde hat keinen Umfang von 42000 km, auch am Äquator nicht :wink:
Selbst bei der Bergspitze des Chimborazo mit deren 6384,4 km zum “Erdmittelpunkt” wären wir noch unter 40200 km.
(man beachte die Stellung der “2”).

@crazyiven
In der Zeile
$x3 = $x1_clean/36040000cos($y3_clean*pi()/180);
solltest Du statt dem “x1” ein “x3” nehmen.

Ciao,
Frank

Wenn Du dann eine lokale postgresql DB hast und postgis dazulädst, kannst Du mit deren Funktionen das ganze ziemlich genau ausrechnen :wink:

Viele Grüße

Dietmar

Zum vergleich kannst du auch hier
http://rechneronline.de/geo-koordinaten/
den Abstand zweier Punkte ausrechnen.

@All
Danke für die Hinweise, habe das Skript nun korrigiert (x3 statt x1) und nun sieht es sehr gut aus. Die Genauigkeit dieser Funktion reicht mir vollkommen für das Vorhaben

@Abstand zweier Punkte:
Da habe ich eine Formel die auf einer Seite die sich mit Geodaten befaasst in PHP übertragen und folgende Funktion:

Wenn ich damit zwei Punkte errechne bekomme ich ungefähr dieselben Abstände (Rundungsbedingt) wie die öffentlichen & fertigen Abstandsrechner, somit sollte das also ok sein. Auch hier sind wieder ein paar Meter “Tolleranz” mit drin, aber da ich mich auf “kleinem Raum” befinde ist das soweit ausreichend für meine Zwecke. Immerhin plane ich kein Routingportal oder Landvermessung :wink:

Also nochmal danke an alle!