0

Entfernung und Richtung zwischen 2 Standorten

“Berechnung der Entfernung zwischen zwei geographischen Punkten”;
“”;
“sourceLat: Latitude Startpunkt”;
“sourceLon: Longitude Startpunkt”;
“destLat: Latitude Zielpunkt”;
“destLon: Longitude Zielpunkt”;
“”;
“Rückgabewert: Entfernung in Kilometer”;
“”;
function calculateDistance(sourceLat : number,sourceLon : number,destLat : number,destLon : number) do
    let PI := 3.14159265359;
    let R := 6371;
    “”;
    let sourceLatRad := sourceLat * PI / 180;
    let sourceLonRad := sourceLon * PI / 180;
    let destLatRad := destLat * PI / 180;
    let destLonRad := destLon * PI / 180;
    “”;
    let x := (destLonRad - sourceLonRad) * cos((sourceLatRad + destLatRad) / 2);
    let y := destLatRad - sourceLatRad;
    sqrt(x * x + y * y) * R
end;
“*************************************************************************************************”;
“Berechnung des Winkels (Vollkreis 0-360 rechtslaufend - 0 = Norden) - Startpunkt -> Zielpunkt”;
“”;
“sourceLat: Latitude Startpunkt”;
“sourceLon: Longitude Zielpunkt”;
“destLat: Latitude Zielpunkt”;
“destLon: Longitude Zielpunkt”;
“”;
“Rückgabewert: Winkel in Grad”;
“”;
function calculateCircleDegrees(sourceLat : number,sourceLon : number,destLat : number,destLon : number) do
    let PI := 3.14159265359;
    “”;
    let sourceLatRad := sourceLat * PI / 180;
    let sourceLonRad := sourceLon * PI / 180;
    let destLatRad := destLat * PI / 180;
    let destLonRad := destLon * PI / 180;
    “”;
    let alpha := atan2(destLonRad - sourceLonRad, destLatRad - sourceLatRad) * 180 / PI;
    if alpha < 0 then 360 + alpha else alpha end
end

3 Antworten

null
    • Sebastian_Nicklas
    • gestern
    • Gemeldet - anzeigen

    Hallo, es ist ja schon ein paar Jährchen her, aber genau diese Lösung, DER ENTFERNUNG ZWISCHEN 2 GEOGRAPHISCHEN PUNKTEN, hab ich gesucht. Allerdings gibt das Feld mir kein Ergebnis heraus. Kann mir bitte jemand helfen?

      • mirko3
      • vor 14 Stunden
      • Gemeldet - anzeigen

      Zu dieser Zeit, als Peter das schöne Script schrieb, litt das Forum unter einem Bug. Kopierte Scripte waren unbrauchbar, wenn sie Anführungszeichen enthielten. Versuche mal so:

      function calculateCircleDegrees(sourceLat : number,sourceLon : number,destLat : number,destLon : number) do
          let PI := 3.14159265359;
          let sourceLatRad := sourceLat * PI / 180;
          let sourceLonRad := sourceLon * PI / 180;
          let destLatRad := destLat * PI / 180;
          let destLonRad := destLon * PI / 180;
          let alpha := atan2(destLonRad - sourceLonRad, destLatRad - sourceLatRad) * 180 / PI;
          if alpha < 0 then 360 + alpha else alpha end
      end;
      
      function calculateDistance(sourceLat : number,sourceLon : number,destLat : number,destLon : number) do
          let PI := 3.14159265359;
          let R := 6371;
          let sourceLatRad := sourceLat * PI / 180;
          let sourceLonRad := sourceLon * PI / 180;
          let destLatRad := destLat * PI / 180;
          let destLonRad := destLon * PI / 180;
          let x := (destLonRad - sourceLonRad) * cos((sourceLatRad + destLatRad) / 2);
          let y := destLatRad - sourceLatRad;
          round(sqrt(x * x + y * y) * R, 2)
      end;
      
      • Sebastian_Nicklas
      • vor 1 Stunde
      • Gemeldet - anzeigen

       Danke für deine Hilfe. Allerdings stelle ich grad fest dass ich ein riesen Denkfehler über die Funktionsweise des Scriptes hatte. Ich dachte, wenn ich 2 Textfelder mit Ortsangabe habe, errechnet es die Entfernung. OMG wie dumm von mir :(

      Hab es kapiert und wie folgt geändert. Weil ich ja nun je 2x Latitude und 2x Longitude -Angaben benötige, habe ich eine Tabelle B erstellt, in die via TRIGGER BEI ÄNDERUNG die Ortsangaben (Start u. Ziel) aus Tabelle A automatisch übernommen werden.

      Aber wie baue ich nun eben dieses Script auf? Orte stehen in Tabelle A --> in Tabelle B mit 3 Spalten steht der Ort als Textfeld, Latitude und Longitude als Zahlenfeld.

      Ich danke echt vielmals für eure/deine Unterstützung.