[PHP] & SQL PLZ zu PLZ Entfernung berechnen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Aeonsam, 15. Dezember 2008 .

Schlagworte:
  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
     
  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
     
  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
     
  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
     
  5. 17. Dezember 2008
    AW: & SQL PLZ zu PLZ Entfernung berechnen

    Wenn jemand noch andere Datenbanken mit koordinaten und namen kennt,

    immer herdamit.


    MFG
     
  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?
     
  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
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.