Mathematik-Frage zu Long/Lat - Distanz

Hallo,
meine Frage hat weniger mit OpenStreetMap zu tun sondern mehr mit Mathe / Geografie:

Ich möchte zu einem gegeben Punkt (LONG/LAT) in einem Umkreis / Rechteck was suchen.
Bsp: 10 km … vom Punkt also 5 km nach Osten, 5 km nach Westen, 5 km nach Norden, 5 km nach Süden.

Für das OpenStreetMap-API brauche ich also die entsprechenden Koordinaten des Punktes “links unter” und “rechts oben”.

Wie rechnet man das aus? Die x km zeigen sich ja je nach Position auf der Erdkugel in anderen LONG/LAT - Differenzen.

Ein “schöne Formel”, die ich “gut” programmieren kann, wäre mir am liebsten. (PS: alles nicht kommerziell)

Grüße,
jomu

Na das kommt natürlich drauf an wie genau Du das haben willst.

Im einfachsten Fall rechnest Du mit 'ner Kugel mit 40.000 km Umfang.

Dann ist 1 Grad in N/S Richtung 111,111 km
und in W/O Richtung 111,111 km * cos(lat).

Chris

Hi
Ich habe es mir einfach gemacht: Um Fehler bei größeren Breitengraddifferenzen zu vermeiden, gehe ich bei der Berechnung von der Mitte der Breite aus.
Man hat zunächst 2 Koordinatenpaare X1, Y1 und X2, Y2 als Dezimalzahl, X_Länge, Y=Breite
Differenzlänge Xd = abs(X2-X1)
Differenzbreite Yd = abs(Y2-Y1)
Ymitte = Yd / 2
LängeX = Xd * Einheitslänge zB.111.111 ich habe mich aber an einem anderen Modell mit 111.243 km orientiert, die Erde soll ja eine Kartoffel sein :-))
BreiteY = Yd * cos(DegToRad(Ymitte)) * 111.243
Strecke s = hypot(LängeX,BreiteY)
Entwicklungsumgebung für mein Konvertierungstool “E605.exe” war Delphi 5 prof, irgendwo schlummern noch Listings von meinen ersten Versuchen mit GFA-Basc (Win16) und Power-Basic aus DOS-Zeiten.

oa. Berechnung ist zwar nicht ganz korrekt, ich gehe aber von Trackpoints mit einem Abstand von kleiner 1 km aus. Fehler dürften damit klein genug bleiben :slight_smile:

mfg und viel Erfolg

Danke für alle Hinweise,
ich dachte, irgendwo gibt es eine “Normberechnungsmethode” (für Koord. WGS84).

Anscheinend ist das nicht so und daher behelfe ich mir hat mit einem kugelförmigen Erde.

Nur zur Info - wozu das ganze:

In GEONames finde ich viele Einträge, wie beinahe identisch sind, etwa:
2362828;Banou;Banou;; 12.16667;-3.2; P;PPL;BF;;0;;;;0;;293;Africa/Ouagadougou;30.12.1993
2362829;Banou;Banou;Banou,Bounou;11.76667;-3.36667;P;PPL;BF;BF;0;;;;0;;295;Africa/Ouagadougou;10.08.2010
2362830;Banou;Banou;; 11.75; -3.25; P;PPL;BF;;0;;;;0;;288;Africa/Ouagadougou;30.12.1993

Ich möchte nun anhand der Koordinaten prüfen,
a) ob es sich um die selben Orte handelt
b) wie weit sie voneinander entfernt liegen

Grüße,
jomu

Hallo zusammen,

also erster Treffer von googlen nach “entfernungsberechnung auf ellipsoid” liefert:
http://www.kompf.de/gps/distcalc.html
=> Ergänzung 1: Entfernungsberechnung für Ellipsoide

Have phun :wink:

Ciao,
Frank

Und hier in Javascript

function distance(latdeg1, lngdeg1, latdeg2, lngdeg2) {
    //Umrechnung von Grad auf Radian
    var lat1 = latdeg1 * Math.PI / 180;
    var lng1 = lngdeg1 * Math.PI / 180;
    var lat2 = latdeg2 * Math.PI / 180;
    var lng2 = lngdeg2 * Math.PI / 180;

    //Eigentliche Berechnung
    var w = Math.acos(Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos(lng2 - lng1)) * 180 / Math.PI;
    var d = w / 360 * 40000 * 1000;

    return d; //in meter
}

Du kannst PostGIS-Funktion benutzen

http://postgis.refractions.net/docs/ST_DWithin.html