Du bist nicht eingeloggt.

Login

Pass

Registrieren

Community
Szene & News
Locations
Impressum

Forum / Bits und Bytes

Entfernungsberechnung

<<< zurück   -1- -2-  
fat32
Experte (offline)

Dabei seit 09.2006
1465 Beiträge
Geschrieben am: 22.12.2006 um 08:55 Uhr

Zitat von -joggeshouse:

Zitat von fat32:

hallo,

$e = acos((sin($Breite1)*sin($Breite2)) + (cos($Breite1)*cos($Breite2)*cos($Laenge2 - $Laenge1)));

return round(($e * 6378.137 * 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679 / 180), 2);

ich berechne mit dieser Formel die Entfernung zwischen 2 Koordinaten.

Wenn ich zwischen Berlin und Laupheim ausrechne, kommen nur 319km raus! also ca. 200 zu wenig....

was stimmt an der rechnugn nicht?


Wieso nimmst du nicht die Entfernungsrechnung von Pythagoras? Ist doch viel einfacher...


weil ich mit pythagoras die erdkrümmung nicht mit drin hab
fat32
Experte (offline)

Dabei seit 09.2006
1465 Beiträge
Geschrieben am: 22.12.2006 um 08:57 Uhr
Zuletzt editiert am: 22.12.2006 um 09:16 Uhr

Zitat von MrDimension:

Wie wäre es wenn du deine Längen und Breitengrade zuerst ins Richtige Maß bringst und nicht das Ergebnis erst ins Bogenmaß bringst.... nur so ein kleiner mathematischer Gedanke....

$pi = 3.141592653589;
$Breite1 = $Breite1/180*$pi;
$Breite2 = $Breite2/180*$pi;
$Laenge1 = $Laenge1/180*$pi;
$Laenge2 = $Laenge2/180*$pi;

$e = acos((sin($Breite1)*sin($Breite2)) + (cos($Breite1)*cos($Breite2)*cos($Laenge2 - $Laenge1)));

return round($e * 6378.388, 2);


versuch es einfach mal so ;-)


danke!
ich probiers gleich aus und schreib dann, obs ging

EDIT: Perfekt! Jetzt kommen 538.1 km raus!!! das müsste stimmen, oder?

Danke nochmal

EDIT 2:

Für alle, die mal das gleiche Problem haben, hier die fertige Funktion:

function entfernung($Laenge1, $Laenge2, $Breite1, $Breite2)
{
if(empty($Laenge1) || empty($Laenge2) || empty($Breite1) || empty($Breite2))
{
return "???";
}
else
{
$pi = 3.141592653589;
$Breite1 = $Breite1/180*$pi;
$Breite2 = $Breite2/180*$pi;
$Laenge1 = $Laenge1/180*$pi;
$Laenge2 = $Laenge2/180*$pi;

$e = acos((sin($Breite1)*sin($Breite2)) + (cos($Breite1)*cos($Breite2)*cos($Laenge2 - $Laenge1)));

return round($e * 6378.388, 2);
}


}
<<< zurück
 
-1- -2- [Antwort schreiben]

Forum / Bits und Bytes

(c) 1999 - 2026 team-ulm.de - all rights reserved - hosted by ibTEC Team-Ulm

- Presse - Blog - Historie - Partner - Nutzungsbedingungen - Datenschutzerklärung - Jugendschutz -