
Berechnung PLZ=>GeoDB=>Entfernung
Hallo zusammen,
habe mir eine GeoDB-Tabelle besorgt, die zu jeder PLZ in Deutschland die
passenden Längen- und Breitengrade enthält.
Damit wollte ich nun die Entfernung von Ort A zu Ort B in einem
PHP-Skript berechnen (daher der PHP-Bezug ;-) sonst ist es vielleicht
eher mathematisches Problem, aber keine Ahnung, wohin das posten könnte.
Setzt ruhig ein FUP):
In erster Nährung gilt sicher:
(Längengrad1-Längengrad2)^2+(Breitengrad1-Breitengrad)^2=Ent ferung^2
Das geht aber von einem "platten" Deutschland aus und vernachlässigt die
Erdkrümmung. Wahrscheinlich bei der Größe Deutschlands auch ok so.
Wenn ich das aber exakt machen will, verläßt mich das was ich damals vor
langer Zeit im Matheleistungskurs gelernt habe:
Wir haben 2 Punkte auf einer Kugel (wenn wir jetzt mal das
voraussetzen!) und wollen die Länge des Verbindungsbogens ermitteln.
Hab jetzt viele Bruchstücke für Förmelchen im Kopf, aber kriegs
irgendwie nicht zusammen.
Vielleicht können mir die Mathematiker unter den PHP-Programmierern da
weiterhelfen...
Morgengrüsse, B.
Re: Berechnung PLZ=>GeoDB=>Entfernung
Bernd Muent schrieb:
> Hallo zusammen,
> habe mir eine GeoDB-Tabelle besorgt, die zu jeder PLZ in Deutschland die
> passenden Längen- und Breitengrade enthält.
....
> In erster Nährung gilt sicher:
> (Längengrad1-Längengrad2)^2+(Breitengrad1-Breitengrad)^2=Ent ferung^2
>
Ich würde die Daten in Gauss-Krüger-Koordinaten umwandeln und dann die
Entfernung berechnen.
Gruß
Arne
Re: Berechnung PLZ=>GeoDB=>Entfernung
Arne Mittelstaedt schrieb:
> Ich würde die Daten in Gauss-Krüger-Koordinaten umwandeln und dann die
> Entfernung berechnen.
Und das geht nach welcher Formel?
B.
Re: Berechnung PLZ=>GeoDB=>Entfernung
Hallo, Bernd,
Du (muent) meintest am 12.09.07:
> Hallo zusammen,
> die passenden Längen- und Breitengrade enthält.
> Damit wollte ich nun die Entfernung von Ort A zu Ort B in einem
> PHP-Skript berechnen
> Wenn ich das aber exakt machen will, verläßt mich das was ich damals
> vor langer Zeit im Matheleistungskurs gelernt habe:
> Wir haben 2 Punkte auf einer Kugel (wenn wir jetzt mal das
> voraussetzen!) und wollen die Länge des Verbindungsbogens ermitteln.
> Hab jetzt viele Bruchstücke für Förmelchen im Kopf, aber kriegs
> irgendwie nicht zusammen.
Kugel-Geometrie, sphärische Trigonometrie.
Mit diesen Suchbegriffen solltest Du die passenden Formeln finden (wobei
dabei i.a. angenommen wird, dass der Abstand der Punkte vom
Kugelmittelpunkt gleich ist - dürfte für Dein Problem nicht sicher
zutreffen).
Viele Gruesse!
Helmut
Re: Berechnung PLZ=>GeoDB=>Entfernung
google hilft:
http://www.koordinaten.de/informationen/formel.shtml
--------------------------------------------------------
// loc1 = array(BREITENGRAD, LAENGENGRAD)
$coords = array('loc1' => array(deg2rad(50.11222), deg2rad(8.68194)),
'loc2' => array(deg2rad(52.52222), deg2rad(13.29750)));
$r = 6378.137; //aequatorradius
$acos1 = (sin($coords['loc1'][0])*
sin($coords['loc2'][0]));
$acos2 = (cos($coords['loc1'][0])*
cos($coords['loc2'][0])*
cos($coords['loc2'][1]-$coords['loc1'][1]));
$erg = acos($acos1 + $acos2);
$dist = $erg * $r;
--------------------------------------------------------
[QUOTE]
Diese Formel gilt für GeoKoordinaten auf der nördlichen Erdhalbkugel und
Werte die östlich von Greenwich liegen. Also Erdkoordinaten mit einem N
und O. Die gleiche Formel kann man auch für alle anderen Koordinaten
benutzen, man muss nur bei Süd- und Westwerten jeweils ein Minus davor
stellen. Also S und W Werte mit -1 multiplizieren!
(http://www.koordinaten.de/informationen/formel.shtml)
[/QUOTE]
mfg
Bernd Muent schrieb:
> Hallo zusammen,
> habe mir eine GeoDB-Tabelle besorgt, die zu jeder PLZ in Deutschland die
> passenden Längen- und Breitengrade enthält.
> Damit wollte ich nun die Entfernung von Ort A zu Ort B in einem
> PHP-Skript berechnen (daher der PHP-Bezug ;-) sonst ist es vielleicht
> eher mathematisches Problem, aber keine Ahnung, wohin das posten könnte.
> Setzt ruhig ein FUP):
>
> In erster Nährung gilt sicher:
> (Längengrad1-Längengrad2)^2+(Breitengrad1-Breitengrad)^2=Ent ferung^2
>
> Das geht aber von einem "platten" Deutschland aus und vernachlässigt die
> Erdkrümmung. Wahrscheinlich bei der Größe Deutschlands auch ok so.
>
> Wenn ich das aber exakt machen will, verläßt mich das was ich damals vor
> langer Zeit im Matheleistungskurs gelernt habe:
> Wir haben 2 Punkte auf einer Kugel (wenn wir jetzt mal das
> voraussetzen!) und wollen die Länge des Verbindungsbogens ermitteln.
> Hab jetzt viele Bruchstücke für Förmelchen im Kopf, aber kriegs
> irgendwie nicht zusammen.
>
> Vielleicht können mir die Mathematiker unter den PHP-Programmierern da
> weiterhelfen...
>
> Morgengrüsse, B.
Re: Berechnung PLZ=>GeoDB=>Entfernung
Bernd Muent schrieb:
> Hallo zusammen,
> habe mir eine GeoDB-Tabelle besorgt, die zu jeder PLZ in Deutschland die
> passenden Längen- und Breitengrade enthält.
> Damit wollte ich nun die Entfernung von Ort A zu Ort B in einem
> PHP-Skript berechnen (daher der PHP-Bezug ;-) sonst ist es vielleicht
> eher mathematisches Problem, aber keine Ahnung, wohin das posten könnte.
> Setzt ruhig ein FUP):
>
> In erster Nährung gilt sicher:
> (Längengrad1-Längengrad2)^2+(Breitengrad1-Breitengrad)^2=Ent ferung^2
>
> Das geht aber von einem "platten" Deutschland aus und vernachlässigt die
> Erdkrümmung. Wahrscheinlich bei der Größe Deutschlands auch ok so.
>
> Wenn ich das aber exakt machen will, verläßt mich das was ich damals vor
> langer Zeit im Matheleistungskurs gelernt habe:
> Wir haben 2 Punkte auf einer Kugel (wenn wir jetzt mal das
> voraussetzen!) und wollen die Länge des Verbindungsbogens ermitteln.
> Hab jetzt viele Bruchstücke für Förmelchen im Kopf, aber kriegs
> irgendwie nicht zusammen.
>
> Vielleicht können mir die Mathematiker unter den PHP-Programmierern da
> weiterhelfen...
Gibts wirklich bei Google, vor kurzem erst dort gesucht und gefunden :-)
Du bist ja nicht der erste, der genau das tun will....
Daniel
Re: Berechnung PLZ=>GeoDB=>Entfernung
Bernd Muent schrieb am 12.09.2007 09:04:
> Arne Mittelstaedt schrieb:
>
>> Ich würde die Daten in Gauss-Krüger-Koordinaten umwandeln und dann die
>> Entfernung berechnen.
>
> Und das geht nach welcher Formel?
>
> B.
Hallo B.,
hilft Dir
<http://de.wikipedia.org/wiki/Gau%C3%9F-Kr%C3%BCger-Koordinatensystem>
vielleicht weiter? Oder kennst Du keine Suchmaschinen? Dann hilft
vielleicht
<http://www.alltheweb.com/search?cat=web&cs=iso88591&q=Gauss-Kr%FCger-Koordinaten&rys=0>
HTH
Werner
--
Werner Flamme, Abt. WKDV
Helmholtz-Zentrum für Umweltforschung GmbH - UFZ
Permoserstr. 15 - 04318 Leipzig
Tel.: (0341) 235-3921 - Fax (0341) 235-453921
http://www.ufz.de - eMail: werner.flamme [at] ufz.de
Re: Berechnung PLZ=>GeoDB=>Entfernung
* Clemens Forster wrote:
> google hilft:
> http://www.koordinaten.de/informationen/formel.shtml
>
> --------------------------------------------------------
> // loc1 = array(BREITENGRAD, LAENGENGRAD)
> $coords = array('loc1' => array(deg2rad(50.11222), deg2rad(8.68194)),
> 'loc2' => array(deg2rad(52.52222), deg2rad(13.29750)));
> $r = 6378.137; //aequatorradius
>
> $acos1 = (sin($coords['loc1'][0])*
> sin($coords['loc2'][0]));
> $acos2 = (cos($coords['loc1'][0])*
> cos($coords['loc2'][0])*
> cos($coords['loc2'][1]-$coords['loc1'][1]));
> $erg = acos($acos1 + $acos2);
> $dist = $erg * $r;
> --------------------------------------------------------
>
> [QUOTE]
> Diese Formel gilt für GeoKoordinaten auf der nördlichen Erdhalbkugel und
> Werte die östlich von Greenwich liegen. Also Erdkoordinaten mit einem N
> und O. Die gleiche Formel kann man auch für alle anderen Koordinaten
> benutzen, man muss nur bei Süd- und Westwerten jeweils ein Minus davor
> stellen. Also S und W Werte mit -1 multiplizieren!
> (http://www.koordinaten.de/informationen/formel.shtml)
> [/QUOTE]
Danke schön, genau sowas suchte ich.
B.
--
BM Computer-Services, Bergmannstr. 66, 10961 Berlin
Webdesign, Internet, Layout und Grafik
Tel.: 030/20649400, mobil 0175/7419517, Fax: 030/20649401
Web: http://www.bmservices.de, eMail: kontakt [at] bmservices.de
Re: Berechnung PLZ=>GeoDB=>Entfernung
Hallo, Clemens,
Du (c.forster) meintest am 12.09.07:
> google hilft:
> http://www.koordinaten.de/informationen/formel.shtml
> --------------------------------------------------------
> // loc1 = array(BREITENGRAD, LAENGENGRAD)
> $coords = array('loc1' => array(deg2rad(50.11222), deg2rad(8.68194)),
> 'loc2' => array(deg2rad(52.52222),
> deg2rad(13.29750))); $r = 6378.137; //aequatorradius
> $acos1 = (sin($coords['loc1'][0])*
> sin($coords['loc2'][0]));
> $acos2 = (cos($coords['loc1'][0])*
> cos($coords['loc2'][0])*
> cos($coords['loc2'][1]-$coords['loc1'][1]));
> $erg = acos($acos1 + $acos2);
> $dist = $erg * $r;
> --------------------------------------------------------
> [QUOTE]
> Diese Formel gilt für GeoKoordinaten auf der nördlichen Erdhalbkugel
> und Werte die östlich von Greenwich liegen. Also Erdkoordinaten mit
> einem N und O. Die gleiche Formel kann man auch für alle anderen
> Koordinaten benutzen, man muss nur bei Süd- und Westwerten jeweils
> ein Minus davor stellen. Also S und W Werte mit -1 multiplizieren!
> (http://www.koordinaten.de/informationen/formel.shtml)
> [/QUOTE]
Und der Fehler, weil die meisten Orte nicht auf Höhe Normalnull liegen,
dürfte vernachlässigbar sein:
bei 3 km Höhe über NN ist der Unterschied zwischen der Bogenlänge und
der "direkten Sicht bis zum Ende der Welt" (knapp 200 km) gerade 0,12
Promille - also noch weit unter der Fahruntüchtigkeit.
Viele Gruesse!
Helmut
Re: Berechnung PLZ=>GeoDB=>Entfernung
Hallo,
ich habe vor einiger Zeit ähnliches mit der OpenGeoDB gemacht. Da gibt es
für solche Berechnungen fertige funktionen.
http://opengeodb.hoppe-media.com/
Gruß Sven
Re: Berechnung PLZ=>GeoDB=>Entfernung
Bernd Muent schrieb:
> habe mir eine GeoDB-Tabelle besorgt, die zu jeder PLZ in Deutschland die
> passenden Längen- und Breitengrade enthält.
So etwas könnte ich auch gebrauchen. Wo kann man so etwas bekommen?
Martin
Re: Berechnung PLZ=>GeoDB=>Entfernung
Martin Lemke schrieb:
> Bernd Muent schrieb:
>
>> habe mir eine GeoDB-Tabelle besorgt, die zu jeder PLZ in Deutschland die
>> passenden Längen- und Breitengrade enthält.
>
> So etwas könnte ich auch gebrauchen. Wo kann man so etwas bekommen?
http://sourceforge.net/project/showfiles.php?group_id=132421
Gruß. Claus