AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Entfernungsbrechnung von OpenStreetMap-Koordinaten
Thema durchsuchen
Ansicht
Themen-Optionen

Entfernungsbrechnung von OpenStreetMap-Koordinaten

Ein Thema von Hobbycoder · begonnen am 2. Sep 2019 · letzter Beitrag vom 3. Sep 2019
Antwort Antwort
Hobbycoder

Registriert seit: 22. Feb 2017
955 Beiträge
 
#1

Entfernungsbrechnung von OpenStreetMap-Koordinaten

  Alt 2. Sep 2019, 18:21
Ich möchte gerne die Entfernung zwischen 2 Koordinaten berechnen. Der erste Wert kommt von eime GPS-System und der zweite von Koordinaten, die über OpenStreetMap ermittelt wurden.

Die Formel für die Berechnung habe ich von hier.

Meine Funktion sieht folgendermaßen aus:
Delphi-Quellcode:
function DistanceKM(lat1, lon1, lat2, lon2: Extended): Extended;
begin
  Result:=6378.388 *
    ArcCos(sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(lon2 - lon1));
end;
Das von der Funktion berechnete Ergebnis lautet: 735.91 km.
Lasse ich die beiden Koordinaten jedoch bei https://rechneronline.de/geo-koordinaten/#entfernung berechnen, kommt 15.896 km raus (war auch korrekt ist).

Kann mir jemand sagen, was an der Formel falsch ist?
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Entfernungsbrechnung von OpenStreetMap-Koordinaten

  Alt 2. Sep 2019, 18:37
Hast du den Unterschied Grad/Rad berücksichtigt?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Entfernungsbrechnung von OpenStreetMap-Koordinaten

  Alt 2. Sep 2019, 18:41
hmm...

Versuche es mal mit:

Delphi-Quellcode:
function GetDistanceBetween(lat1,Long1,lat2,Long2 : Double) : Double;
var
  F,G,L : Double;
  SF, SG, SL,
  CF, CG, CL : Double;
  W1, W2 : Double;
  S, C : Double;
  O,R,D : Double;
  H1, H2 : Double;
  ff : Double;
begin
  try
    ff := 1 / 298.257;
    F := (lat1 + lat2) / 2;
    G := (lat1 - lat2) / 2;
    L := (long1 - long2) / 2;

    SF := Sin(F*Pi/180);
    SG := Sin(G*Pi/180);
    SL := Sin(L*Pi/180);
    CF := Cos(F*Pi/180);
    CG := Cos(G*Pi/180);
    CL := Cos(L*Pi/180);

    W1 := sqr(SG * CL);
    W2 := sqr(CF * SL);
    S := W1 + W2;

    W1 := sqr(CG * CL);
    W2 := sqr(SF * SL);

    C := W1 + W2;

    if C = 0.0 then
      exit(0.0);

    O := ArcTan(Sqrt(S/C));

    if O = 0.0 then
      exit(0.0);

    R := Sqrt(S*C) / O;
    D := 2 * O * 6378.14;

    H1 := (3*R-1) / (2*C);
    H2 := (3*R+1) / (2*S);

    W1 := sqr(SF * CG) * H1 * ff + 1;
    W2 := sqr(CF * SG) * H2 * ff;

    result := D * (W1 - W2) * 1000;
  except
    Result := 0;
  end;
end;
Mavarik
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
955 Beiträge
 
#4

AW: Entfernungsbrechnung von OpenStreetMap-Koordinaten

  Alt 2. Sep 2019, 18:57
Hast du den Unterschied Grad/Rad berücksichtigt?
Natürlich nicht mit DegToRad komme ich auf 12,8 km....hm.

hmm...

Versuche es mal mit:

Delphi-Quellcode:
function GetDistanceBetween(lat1,Long1,lat2,Long2 : Double) : Double;
...
Mavarik
Liefert die Funktion Meter zurück? Dann würde es passen. Kommt 15904.91 bei raus, und deckt sich nahe zu mit den online berechneten Werten
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#5

AW: Entfernungsbrechnung von OpenStreetMap-Koordinaten

  Alt 3. Sep 2019, 08:51
Das Problem ist das die Erde KEINE Kugel ist, und es wohl deshalb zig verschiedene Versionen einer solchen Berechnung gibt.
Welche jetzt "amtlich" ist kann ich nicht sagen, aber vielleicht gibt es hier ja ein paar Geo-Spezialisten.

Hier nur mal ein paar Versionen
http://www.movable-type.co.uk/scripts/latlong.html
http://delphiforfun.org/Programs/Lib...stanceTest.htm
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Entfernungsbrechnung von OpenStreetMap-Koordinaten

  Alt 3. Sep 2019, 10:40
Das Problem ist das die Erde KEINE Kugel ist, und es wohl deshalb zig verschiedene Versionen einer solchen Berechnung gibt.
Welche jetzt "amtlich" ist kann ich nicht sagen, aber vielleicht gibt es hier ja ein paar Geo-Spezialisten.
Amtlich ist ne gute Frage, ich denke meine Version ist recht gut und berücksichtig die 1 / 298.257 Abflachung durch die Erddrehung.
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch
Online

Registriert seit: 11. Aug 2012
Ort: Essen
1.604 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Entfernungsbrechnung von OpenStreetMap-Koordinaten

  Alt 3. Sep 2019, 13:43
Über diese Berechnungen kann man Doktorarbeiten schreiben (und das haben auch diverse Geographen getan). Die meisten Formeln sind über kurze Entfernungen ganz brauchbar, über längere gibt es mehr oder weniger große Abweichungen.

Ich habe das Glück, dass meine Berechnungen meist nur über ein paar Kilometer genau sein müssen...
Thomas Mueller
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz