Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Entfernung von zwei Orten ermitteln
Frage
Hallo,
ich bastel gerade an einem PHP Script, indem ich die Entfernungen von verschiedenen Orten brauche.
Da es sehr mühsam ist die Entfernungen einzugeben und bei mehreren Orten glatt ein Ding der unmöglichkeit ist, jede Entfernung einzugeben.
Jetzt dachte ich, dass man die Entfernung irgendwie über die Koordinaten der Orte ermitteln kann, leider fehlt mir da der Ansatz, dachte schonmal an Pytagoras, aber irgendwie will das nicht recht klappen.
Wäre klasse, wenn einer ne idee hat
MFG
Fragenfruger
Antwort 1 von disco
moin
das ist aber ziemlich vage, was du da erzählst. was sind das für orte/punkte? stehen dir die koordinaten zur verfügung? ansonsten, brauch man ja gar nicht weiter in die richtung zu denken....
bin zwar schon länger aus der schule raus, aber tatsächlich müsste man in einem koordinatensystem die direkte entfernung von 2 punkten sehr leicht berechnen können, indem man sie über einen 90Grad winkel verbindet.
und wenn mich nicht alles täuscht ist das a^2+b^2=c^2 doch von pytagoras.
also solltest du dein problem mal etwas besser verdeutlichen, damit man dir helfen kann.
g,
disco
das ist aber ziemlich vage, was du da erzählst. was sind das für orte/punkte? stehen dir die koordinaten zur verfügung? ansonsten, brauch man ja gar nicht weiter in die richtung zu denken....
bin zwar schon länger aus der schule raus, aber tatsächlich müsste man in einem koordinatensystem die direkte entfernung von 2 punkten sehr leicht berechnen können, indem man sie über einen 90Grad winkel verbindet.
und wenn mich nicht alles täuscht ist das a^2+b^2=c^2 doch von pytagoras.
also solltest du dein problem mal etwas besser verdeutlichen, damit man dir helfen kann.
g,
disco
Antwort 2 von anonym
Falls das Orte auf der Erde sind, funktioniert Pythargoras nicht besonders gut (bzw. garnicht.). Das liegt daran, dass die Erde eine Kugel ist, und zumindest das muss man berücksichtigen (auch wenn man sich "Unebenheiten" egal sein lässt :), wie ich in Computergrafikvorlesungen in der Uni und dazugehörigen Übungen gelernt habe.
Man muss also, wenn man die Koordinaten hat, die Bogenlänge zwischen den Punkten auf der Kugel berechnen. Frag jetzt nicht nach Details - einmal gemacht und wieder vergessen - kriegt man aber mit internet oder guten mathebüchern raus.
Grüße
Man muss also, wenn man die Koordinaten hat, die Bogenlänge zwischen den Punkten auf der Kugel berechnen. Frag jetzt nicht nach Details - einmal gemacht und wieder vergessen - kriegt man aber mit internet oder guten mathebüchern raus.
Grüße
Antwort 3 von Pausenfueller
Hallo,
wenn es um Enfernungen zwischen Orten in Deutschland geht, dann nimm einfach einen Routenplaner. In KlickRoute wird z.B. neben der Länge der Fahrstrecke auch die geographische Entfernung (Luftlinie) angezeigt.
Gruß
Pausenfüller
wenn es um Enfernungen zwischen Orten in Deutschland geht, dann nimm einfach einen Routenplaner. In KlickRoute wird z.B. neben der Länge der Fahrstrecke auch die geographische Entfernung (Luftlinie) angezeigt.
Gruß
Pausenfüller
Antwort 4 von Nessus
Antwort 5 von ClemBra
Wenn du die Daten schon in einer Tabelle hast, guck dir mal den "MapMod" für phpBB2 an. Da steht so eine Funktion drin.
Ach, bevor du lange suchst, ich habs ja hier:
Die Funktion funktioniert zumindest fürs nord-östliche Viertel der Erde (also Europa/Asien), mit negativen Zahlen hab ichs noch nicht getestet.
Ob das Ergebnis Meter oder Kilometer sind wirst du wohl dann sehen ;-)
Ach, bevor du lange suchst, ich habs ja hier:
function geo_distance ($longitude_1, $latitude_1, $longitude_2, $latitude_2)
{
$earth_radius = 6378137.0;
$long1 = deg2rad ($longitude_1);
$long2 = deg2rad ($longitude_2);
$lat1 = deg2rad ($latitude_1);
$lat2 = deg2rad ($latitude_2);
$dlon = $long2 - $long1;
$dlat = $lat2 - $lat1;
$a = pow( sin($dlat / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($dlon / 2), 2);
$d = 2 * atan2(sqrt($a), sqrt(1 - $a));
return $earth_radius * $d;
}
Die Funktion funktioniert zumindest fürs nord-östliche Viertel der Erde (also Europa/Asien), mit negativen Zahlen hab ichs noch nicht getestet.
Ob das Ergebnis Meter oder Kilometer sind wirst du wohl dann sehen ;-)

