#1 15. Dezember 2008 & SQL PLZ zu PLZ Entfernung berechnen Hallo Leute, ich dachte starte mal ein Tread darüber. Ist zwar schon weit verbreitet, finde aber nichts vernünftiges. Da das ganze ja nichts kosten soll basiert das genze hier auf opengeodb. Downloadbar unter: OPENGEO ich habe nun die DB erstellt und auch schon umgewandelt. Wenn ich nun den Datensatz von hannover mir ausgebe lasse sieht das so aus. +-------+-----------+--------+------------------+---------+---------+ | zc_id | zc_loc_id | zc_zip | zc_location_name | zc_lat | zc_lon | +-------+-----------+--------+------------------+---------+---------+ |40953 |17873 | 30669 | Hannover | 52.3667 | 9.71667 | +-------+-----------+--------+------------------+---------+---------+ 1 row in set nun habe ich ja lat & lon mit den beiden variablen lässt sich angeblich die distanz zwischen 2 PLZ berechnen. also PLZ Hannover: 30669 PLZ Hamburg: 20095 DATENSATZ HANNOVER UND HAMBURG +-------+-----------+--------+------------------+---------+---------+ | zc_id | zc_loc_id | zc_zip | zc_location_name | zc_lat | zc_lon | +-------+-----------+--------+------------------+---------+---------+ |40953 |17873 | 30669 | Hannover | 52.3667 | 9.71667 | +-------+-----------+--------+------------------+---------+---------+ 1 row in set +--+--+--+--+--+--+ | zc_id | zc_loc_id | zc_zip | zc_location_name | zc_lat | zc_lon | +--+--+--+--+--+--+ |40604 | 17838 | 20095 | Hamburg | 53.55 | 10 | +--+--+--+--+--+--+ 1 row in set auf opengeodb gibts auch ein faq zur entfernung LINK nur schaffe ich es nicht das ganze in php zu realisieren. Wenn jemand sowas schonmal gemacht hat und helfen könnte meldet euch. MFG Aeonsam + Multi-Zitat Zitieren
#2 15. Dezember 2008 AW: & SQL PLZ zu PLZ Entfernung berechnen Hallo, opengeo kenne ich zwar nicht, aber ich kann Dir [G]plz entfernung[/G] / [G]plz entfernung php[/G] ans Herz legen. Hier hat jemand anscheinend eine Formel für PHP gefunden. Ob sie korrekt ist, das ist eine andere Frage *fg* Aber das hört ich schon interessant an. Hier auf der Arbeit kann ich es nicht testen. Vielleicht komme ich heute Abend dazu und kann Dir evtl noch helfen mfg Sn0wm4n + Multi-Zitat Zitieren
#3 15. Dezember 2008 AW: & SQL PLZ zu PLZ Entfernung berechnen Code: Entfernungsberechnung --------------------- Entfernungen zwischen zwei Zustellbezirken oder Postfachbereichen lassen sich mithilfe der Gauß-Krüger- oder UTM-Koordinaten durch einfache Anwendung des Pytagorassatzes berechnen, da diese Koordinatensysteme rechtwinkelig und metrisch sind: Formel für die Entfernungsberechnung mit Gauß-Krüger-Koordinaten: difRechts := abs(GKRECHTS1 - GKRECHTS2) difHoch := abs(GKHOCH1 - GKHOCH2 ) strecke := sqrt(difRechts * difRechts + difHoch * difHoch) Formel für die Entfernungsberechnung mit UTM-Koordinaten: difRechts := abs(UTMRECHTS1 - UTMRECHTS2) difHoch := abs(UTMHOCH1 - UTMHOCH2 ) strecke := sqrt(difRechts * difRechts + difHoch * difHoch) GKRECHTS1 / UTMRECHTS1: Rechtswert der ersten Postleitzahl GKHOCH1 / UTMHOCH1: Hochwert der ersten Postleitzahl GKRECHTS2 / UTMRECHTS2: Rechtswert der zweiten Postleitzahl GKHOCH2 / UTMHOCH2: Hochwert der zweiten Postleitzahl abs(): Absolutbetrag sqrt(): Quadratwurzel strecke: Das Ergebnis ist die Entfernung in Meter. Quelle: Geodaten Deutschland (Orte, Postleitzahlen, Telefonvorwahlen, Landschaften, Naturräume, Schnee- und Windlastzonen, Kartenwerke) - Datenblätter //EDIT: das ganze könnte eventuell so ausschaun: (bin mir aber nicht sicher ob das stimmt) Code: $ergebnis = sqrt(pow(($x1-$x2),2)+pow(($y1-$y2),2)) ; $ergebnis = round ($ergebnis,2) ; echo "Die Distanz zwischen Koordinate 1 und 2 betraegt: ".$ergebnis ; //EDIT2: da hab ich noch zwei seiten gefunden die vl helfen können: Thema anzeigen - Berechnung Abstand zwischen zwei Koordinaten Orthodrome – Wikipedia + Multi-Zitat Zitieren
#4 15. Dezember 2008 AW: & SQL PLZ zu PLZ Entfernung berechnen So ich habe was was auch anscheinend gut klappt. Also wie es aussiht wird die Breite und Länge einer postleitzahl in ein radius umgerechnet. das geht so: Koordinatenwert / 180 * p da kommen die Erinnerungen aus der 7 Klasse und den satz des pythagoras. Und die Entfernung wird dann mit einer formel berechnet (e = ARCCOS[ SIN(Breite1)*SIN(Breite2) + COS(Breite1)*COS(Breite2)*COS(Länge2-Länge1) ]) das ganze hier als code ich hoffe ich konnte anderen auch weiterhelfen PHP: <? // Geodaten Hannover / 30669 $B1 = 9.71667 ; $L1 = 52.3667 ; // Geodaten Hamburg / 20095 $B2 = 10 ; $L2 = 53.55 ; // Kreiszahl Pi $pi = pi (); // Umrechnung der Gradzahl in RAD: $breite1 = $B1 / 180 * $pi ; $länge1 = $L1 / 180 * $pi ; $breite2 = $B2 / 180 * $pi ; $länge2 = $L2 / 180 * $pi ; print "<p> Umrechnung der Gradzahl in RAD: </p> " ; print " Breite1: $B1 = $breite1 <br> " ; print " Länge1: $L1 = $länge1 <br> " ; print " Breite2: $B2 = $breite2 <br> " ; print " Länge2: $L2 = $länge2 <br> " ; // Die Formel zur Entfernungsberechnung bedient sich einer Einheitskugel: // e = ARCCOS[ SIN(Breite1)*SIN(Breite2) + COS(Breite1)*COS(Breite2)*COS(Länge2-Länge1) ] $e = acos ( sin ( $breite1 )* sin ( $breite2 ) + cos ( $breite1 )* cos ( $breite2 )* cos ( $länge2 - $länge1 ) ); $entfernung = $e * 6378.137 ; print " <p> Entfernung (Luftlinie): " . $entfernung . " km </p>" ; ?> Ergebniss bei Postleitzahl (Postleitzahl.ORG / PLZ Deutschland) = 132.94 km und meins = 133 km und ich bin Happy EDIT_1: musste gerade feststellen das es bei kleineren Entfernungen ca 3 km abweichungen gibt. das liegt aber an opengeodb da diese nicht ganzgenausind. (man sihts an den kommastellen) damit kann man aber denke ich leben, schließlich ist das ganze opensource. MFG Aeonsam + Multi-Zitat Zitieren
#5 17. Dezember 2008 AW: & SQL PLZ zu PLZ Entfernung berechnen Wenn jemand noch andere Datenbanken mit koordinaten und namen kennt, immer herdamit. MFG + Multi-Zitat Zitieren
#6 19. Dezember 2008 AW: & SQL PLZ zu PLZ Entfernung berechnen ich hab die geodb auch mal für ein projekt verwendet (community, option "folgende leute sind in deiner umgebung" inkl anzeige auf karte, wer wo ist), allerdings hatte ich da je nach lage im bundesland probleme mit der genauigkeit. ich hab das auf die (evtl nicht vorhandene) krümmung der landkarte geschoben. benutzt ihr (freie) bilder ( =karten ) zur anzeige? wenn ja, welche? + Multi-Zitat Zitieren
#7 29. Dezember 2008 AW: & SQL PLZ zu PLZ Entfernung berechnen kartenansichten machen wir garnicht. benötigen die daten nur um plz rauszufischen um die user mit den plz dann anzuzeigen. Also suiche user 50km kreis hannover, dann wird halt jeder user der ne plz in der umgebung hat angezeigt. Das ist nicht das thema. wie ich schon sagte ist opengeodb leider etwas ungenau bei koordinaten. z.B lan 56,1 damit kann man wenig anfangen man bräuchte ca 7 nachkommastellen um die entfernung auf km genauigkeit zu berechnen. MFG Aeonsam + Multi-Zitat Zitieren