Berechnung der Entfernung zwischen zwei PLZ

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #76
    Dann liegt es entweder an der Konfiguration, oder es dauert einfach ne Zeit, bis die Queries alle ausgeführt wurden.
    hopka.net!

    Kommentar


    • #77
      Original geschrieben von Hopka
      Dann liegt es entweder an der Konfiguration, oder es dauert einfach ne Zeit, bis die Queries alle ausgeführt wurden.

      server nicht gefunden kommt da soll mir aber eigentlich jetzt auch wurscht sein

      Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
      sondern mit den Augen das Manual zu lesen.

      Kommentar


      • #78
        Hallo Leute,

        verfolge diese Diskussion seit langem, und da ich auch so ein Feature auf meiner Seite haben wollte, aber nicht so kompliziert wie mit GeoClass, habe ich eine kleine Funktionssammlung "plz.php" geschrieben, die kinderleicht mittels require() von überall eingebunden werden kann und die wichtigsten Befehle bereitstellt:

        PHP-Code:
        // liefert alle Postleitzahlen zu einem Ort in einem array zurueck
        // Parameter: String $ort
        // Returns: array
        function plzGetPLZ($ort


        // liefert alle Ortsnamen zu einer PLZ in einem array zurueck (z.B. auch Ortsname:Stadtteilname)
        // Parameter: Int $plz
        // Returns: array
        function plzGetOrt($plz)


        // liefert die Distanz zwischen zwei PLZ in km zurueck. 
        // Vorsicht: Es ist die Luftlinie gemeint, nicht die Strassenentfernung!
        // Parameter: Int $plz1, Int $plz2
        // Returns: float
        function plzGetDistanceBetween($plz1$plz2)


        // liefert alle PLZ in definierbarem Umkreis um eine PLZ in einem array zurueck
        // Parameter: Int $plz (Zentrum der Betrachtung), float $distance (Umkreisradius in km) 
        // Returns: array
        function plzGetAllPLZNear($plz$distance

        Benötigt wird lediglich die aktuellste Version der openGeoDB, die wie bekannt unter http://opengeodb.de/ erhältlich ist.


        Über Feedback und Verbesserungsvorschläge würde ich mich freuen!
        Angehängte Dateien
        Zuletzt geändert von zissakos; 08.06.2004, 01:14.

        Kommentar


        • #79
          hallo zissakos,
          ich verfolge diese diskussionsrunde auch schon seit längeren gespannt.
          ich finde deine funktion ist ganz nützlich, danke dir!
          nur haben sich in irgendeiner art einige fehler eingeschlichen.
          // liefert alle PLZ in definierbarem Umkreis um eine PLZ in einem array zurueck
          // Parameter: Int $plz (Zentrum der Betrachtung), float $distance (Umkreisradius in km)
          // Returns: array
          function plzGetAllPLZNear($plz, $distance)
          bei meinen testversuchen findet er nicht immer die richtigen postleitzahlen bei der umkreissuche. vielleicht liegt er bei der variable $formula. bei städten rechnet er den umkreis immer vom gleichen zentrum. (ich weiß nicht was er da festlegt)

          außerdem tritt ein rundungsfehler auf. auch wenn man die entfernung von ein und derselben plz habne will tritt die zahl 0.000095 auf.
          ansonsten finde ich das script aber gut.

          so, das war mein feedback dazu. ich hoffe, dass du damit etwas anfangen kannst und dass du den fehler schnell findest.

          Kommentar


          • #80
            und nu?

            Hi Leute.
            Ich baue grade eine Community auf, bei der ein Feature eine Map mit den Mitgliedern sein soll, die da als farbig markierte Punkte eingetragen werden.
            Schön und gut... es war ja schon nen krampf die opengeodb-0.2.3c-UTF8-mysql.sql mit ihren fast 25MB größe in die Datenbank zu prügeln aber was nu? ich hab absolut keine ahnung wie ich nun weiter machen soll. Kenn jemant Pages mit Codeschnipseln, die einem als Denkanstoß dienen könnten? Oder hat jemand selber was im angeboht?
            Danke vorab
            Gruß Christian

            *edit*
            noch nen paar beispiele wie ich das meine:
            http://www.tolkienforum.de/stuff/usermap/
            http://www.chaga.de/Geo/n/karte.html
            http://www.seat-toledo.de/cms/profile_all.php
            http://www.buha.info/people/map.php
            Zuletzt geändert von ChristianM.; 14.07.2005, 04:52.
            Wer immer nur tut was er kann lernt nie was neues.

            Kommentar


            • #81
              hast Du denn die GeoClass schon? Ist doch genau dafür gemacht...

              https://sourceforge.net/project/show...group_id=87652

              Kommentar


              • #82
                hab ich aber wie weiter? egal was ich öffne tut nichts und nen todo/howto habsch ned gefunden
                Wer immer nur tut was er kann lernt nie was neues.

                Kommentar


                • #83
                  Also ich habe das folgendermaßen gemacht:

                  1. ich habe die opengeodb verwendet, um die GPS-Koordinaten zu den PLZ herauszufinde. (Du kannst eine ganze Menge Felder löschen, das macht dein Skript schneller)

                  2. Dann habe ich ein bischen geformelt, aber leider komm ich gerade nicht mehr an den Code ran. Musst das hier einfach noch in eine Funktion packen und fertig ist die Papekiste
                  Wenn die Tatsachen nicht mit der Theorie übereinstimmen –

                  um so schlimmer für die Tatsachen.

                  Kommentar


                  • #84
                    uiuiui... na das wird ja was O_o... wenns fertig ist stell ichs mal online... das ist ja echt nen gekrampfe
                    Wer immer nur tut was er kann lernt nie was neues.

                    Kommentar


                    • #85
                      die Formeln sind doch alle schon fertig in der geoclass, musste nur rauskopieren...

                      Kommentar


                      • #86
                        oh gut... dann werd ich mich mal ran setzen
                        Wer immer nur tut was er kann lernt nie was neues.

                        Kommentar


                        • #87
                          hab doch was gefunden bei mir - ist aber nur ein kleiner Schnipsel...

                          PHP-Code:


                          $zweite_breite 
                          $array[0]['lat']; // lat aus der datebank
                          $zweite_laenge $array[0]['lon']; // lon aus der datenbank
                          $zweite_breite_rad deg2rad($zweite_breite);
                          $zweite_laenge_rad deg2rad($zweite_laenge);
                                  
                           
                          // das gleiche noch für einen ersten Ort...

                          $welt 6378.137;
                                  
                          $entfernung acos((sin($erste_breite_rad) * sin($zweite_breite_rad)) + (cos($erste_breite_rad) * cos($zweite_breite_rad) * cos($erste_laenge_rad $zweite_laenge_rad))) * $welt;
                          $entfernung round($entfernung); 
                          Zuletzt geändert von fragen; 17.07.2005, 08:47.

                          Kommentar


                          • #88
                            6378,137km, um genau zu sein
                            Wenn die Tatsachen nicht mit der Theorie übereinstimmen –

                            um so schlimmer für die Tatsachen.

                            Kommentar


                            • #89
                              ahh gut danke euch
                              Wer immer nur tut was er kann lernt nie was neues.

                              Kommentar


                              • #90
                                Probleme mit der Sortierung

                                Ich habe die Funktion von zissakos mal eingebaut aber leider werden die ausgaben nicht in der richtigen reihenfolge ausgegeben. d.h. es wird nicht nach entfernung sortiert.

                                Wobei das aber in der funktion vorgesehen ist ORDER by e ASC

                                hier mein geänderter code

                                PHP-Code:
                                // liefert alle PLZ in definierbarem Umkreis um eine PLZ in einem array zurueck. Dieses hat als Index immer die PLZ und 
                                // als Wert die Entfernung zum Zentrum der Betrachtung
                                // Parameter: Int $plz (Zentrum der Betrachtung), float $distance (Umkreisradius in km) 
                                // Returns: array
                                function plzGetAllPLZNear($plz$distance) { 
                                global 
                                $plz_erdradius;
                                    
                                $db connect_db();
                                    
                                $query 'SELECT * FROM geodb_locations WHERE plz LIKE "%'.$plz.'%" AND typ=6';
                                    
                                $results mysql_query ($query,$db) or mysql_die();   
                                    
                                $erg = array();
                                    while (
                                $item mysql_fetch_object($results)) {
                                        
                                $latitudeRad deg2rad($item->breite);
                                        
                                $longitudeRad deg2rad($item->laenge);
                                        
                                $formula "IFNULL((ACOS((SIN($latitudeRad)*SIN(RADIANS(breite))) + (COS($latitudeRad)*COS(RADIANS(breite))*COS(RADIANS(laenge)-$longitudeRad))) * $plz_erdradius),0)";
                                        
                                $query "SELECT *, $formula AS e FROM geodb_locations WHERE $formula < $distance ORDER BY e ASC";
                                        
                                        
                                $results2 mysql_query ($query,$db) or mysql_die();   
                                        while (
                                $item2 mysql_fetch_object($results2)) {
                                           
                                //foreach(explode(",",$item2->plz) as $p) array_push($erg,$p);
                                           
                                foreach(explode(",",$item2->plz) as $p$erg[$p]=$item2->e;
                                        }
                                    }      
                                    
                                $erg array_unique($erg);
                                    
                                asort($erg);
                                    return 
                                $erg;

                                Weiß jemand was hier schief läuft?

                                Kommentar

                                Lädt...
                                X