PLZ Geokoordinaten

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

  • #46
    Deine Formel wird zwar immer größer und unverständlicher für mich, aber die Genauigkeit wird deshalb nicht besser.
    2-3 km Schwankungen zu den tatsächlichen Werten.
    Welche PLZ Datenbank hat 8000 Einträge?
    Meine hat rund 13000 (OpenGeoDB)

    Ich hab noch eine andere mit rund 41000 PLZs ohne Geodaten.

    http://www.php-resource.de/forum/fil...db/plz_gem.zip

    Zuletzt geändert von JohnM; 25.09.2003, 19:52.
    PHP
    MySQL
    Jetzt klicken & reich werden

    Kommentar


    • #47
      Ist die Datenbank von der Post für ~100 EUR und hat 8265 Eintäge

      PLZ|ORT|LÄNGE|BREITE

      R

      Kommentar


      • #48
        Moin Moin

        Da ich mich gerade damit ein wenig beschäftige und ich durch ein Link diesen Post gefunden habe, hätte ich da vielleicht eine Idee.

        Folgende Idee:

        Usereingabe: PLZ 45
        Koordinaten zu der PLZ: 7.3192 und 51.5322
        gewünschter Umkreis: 30 Km

        Mit diesen Angaben kann man doch dann um die 45 einen "Kreis" errechnen.
        OK, das werden dann viele Koordinaten, aber du musst nicht die Datenbank bei jedem Eintrag abfragen.
        Diese können dann halt mit den Koordinaten von 45 überpürft werden (between) - werden zwar viele, aber vielleicht ist das ja schneller.
        >>>> Erst denken, dann suchen, dann fragen <<<<

        Kommentar


        • #49
          Ich nehme dann doch lieber eine 5 stellige PLZ um die Geodaten ( Länge, Breite ) eines Ortes zu benutzen.

          Hast Du eine Ahnung, wieviele Orte mit 45 anfangen?
          PHP
          MySQL
          Jetzt klicken & reich werden

          Kommentar


          • #50
            OffTopic:
            Hast Du eine Ahnung, wieviele Orte mit 45 anfangen?
            Mönchengladbach schon mal nicht!

            Kommentar


            • #51
              Hallo zusammen,

              möchte euch darauf hinweisen, dass OpenGeoDB und GeoClass jetzt in einer neuen Version bei SourceForge zu finden sind: http://sf.net/projects/geoclassphp/

              Leider haben wir noch keine Beispiele für die neu Klasse fertig, aber wir versuchen sie so schnell wie möglich nachzureichen (dann wahrscheinlich unter http://www.multimediamotz.de/GeoClass/).

              Neu ist unter anderem die Möglichkeit beliebige SQL-Datenbanken anzubinden und eine eigene Unterstützung für OpenGeoDB.

              Außerdem lassen sich Karten auf Basis von ArcInfo (.e00) Dateien zeichnen.

              Gruß
              Stefan

              Kommentar


              • #52
                Echt edel, was ihr anbietet!

                Kommentar


                • #53
                  Hi Leutz,
                  heute mal ne ganz blöde Frage, aber ich komme einfach nicht drauf!



                  Was muss ich hier:

                  function getInfo() {
                  return $this->name." (".$this->latitude."/".$this->longitude.")";


                  ...eingeben, damit ich nicht den Namen, Längen- und Breitengrad erhalte, sondern (oder zusätzlich) die PLZ???

                  Kommentar


                  • #54
                    $this->plz oder $this->zip???

                    Kommentar


                    • #55
                      Hallo PKolb,

                      das kommt darauf an, wo du deine Daten her hast.

                      Ich gehe davon aus, dass du die neueste Version (0.2.1b) der GeoClass einsetzt (sonst unter http://sf.net/projects/geoclassphp downloaden) und als Datenbestand OpenGeoDB nutzt (sonst ebenfalls oben herunterladen).

                      $this->dbValues[plz];

                      Dabei ist zu beachten, dass bisher alle PLZs eines Ortes als durch Kommas getrennter String hinterlegt sind.

                      Gruß
                      Stefan

                      Kommentar


                      • #56
                        Richtig, die Daten habe ich von OpenGeoDB, sorry das ich das oben vergessen habe zu erwähnen.


                        Somit benutze ich auch die GeoClass.php.
                        In dieser steht:

                        function getInfo() {
                        return $this->name." (".$this->latitude."/".$this->longitude.")";
                        ...was mir den Namen des Ortes und die Längen- Breitengrade zurückgibt.



                        Aufgerufen wird das ganze durch:

                        /**
                        * Umkreissuche
                        */
                        $radius = 100; // maximale Entfernung in Kilometern
                        $maxHits = 2000; // maximale Anzahl der Treffer
                        $myHome = new GeoObject('Frankfurt mit der PLZ 60598', 50.11667, 8.68333);
                        $matches = $geodb->findCloseByGeoObjects($myHome, $radius, $maxHits);
                        if (count($matches)) {
                        echo 'Im Umkreis von <b>'.$radius.'</b> km um <b>'.$myHome->name.'</b> wurden folgende Orte gefunden:<br>';
                        echo '<ul>';
                        foreach ($matches as $object) {
                        echo '<li>'.$myHome->getDistanceString($object).' ';
                        echo '('. $myHome->getOrientation($object, GEO_ORIENTATION_SHORT).') ';
                        echo '- <b>'.$object->getinfo().'</b></li>';
                        }
                        echo '</ul>';
                        Nun möchte ich, wie gesagt, noch zusätzlich die jeweilige PLZ mit ausgeben.
                        Mit den Vorschlägen von TobiaZ und geoclass funktioniert das ganze leider nicht. (Danke an euch beide!)

                        Sonst noch jemand eine Idee, wie ich das nun hinbekomme?

                        Kommentar


                        • #57
                          wie sieht es denn mit dem Vorschlag von geoClass aus?

                          Kommentar


                          • #58
                            In $geodb ist ja wahrscheinlich deine Klasse gespeichert, die auf die OpenGeoDB zugreift. In deinen $matches sind Geo_Object-Klassen, die neben den Variablen $object->latitude usw. noch ein Array $object->dbValues enthält, in denen alle Felder aus der Datenbank gespeichert sind.

                            echo '- <b>'.$object->getinfo().', '.$object->dbValues['plz'].'</b></li>';

                            sollte zum Ergebnis führen. Es sei denn wir haben einen großen Bug drin ;-)

                            Sonst mach als Test mal folgendes:

                            print "<pre>";
                            rprint($object->dbValues);
                            print "</pre>";

                            Es würde mich sehr interessieren, was daraus geworden ist, also antworte bitte ruhig noch mal. Sonst auch gerne unter geoclass [at] multimediamotz [dot] de

                            Gruß
                            Stefan

                            Kommentar


                            • #59
                              Also, dank geoclass's Hilfe konnte ich nun meine gewünschte Ausgabe erzielen.

                              Das Problem war, dass die GeoClass.php nie die PLZ zurückgibt. Also muss eine neue Funktion geschrieben werden bzw. die getinfo()- Funktion geändert werden, wovon geoclass jedoch abrät, da es mit Updates von der GeoClass.php Probleme geben kann.

                              Ich habe es nun so gelöst:

                              In meiner GeoClass.php habe ich eine neue Funktion erstellt (getPLZ):

                              /** Returns the PLZ.
                              */
                              function getPLZ() {
                              return "<b>".$this->name. " </b> und die dazugehörige PLZ(s): <b>" .$this->databaseValues[plzs]. "</b>";
                              }
                              ...und in meine inex.php die Abfrage geschrieben:

                              /**
                              * Umkreissuche
                              */
                              $radius = 20; // maximale Entfernung in Kilometern
                              $maxHits = 5; // maximale Anzahl der Treffer
                              $myHome = new GeoObject('Frankfurt mit der PLZ 60598', 50.11667, 8.68333);
                              $matches = $geodb->findCloseByGeoObjects($myHome, $radius, $maxHits);
                              if (count($matches)) {
                              echo 'Im Umkreis von <b>'.$radius.'</b> km um <b>'.$myHome->name.'</b> wurden folgende Orte gefunden:<br>';
                              echo '<ul>';
                              foreach ($matches as $object) {
                              echo '<li>'.$myHome->getDistanceString($object).' ';
                              echo '('. $myHome->getOrientation($object, GEO_ORIENTATION_SHORT).')';
                              echo '- '.$object->getplz().'</li>';
                              Die Ausgabe lautet nun:

                              6.23 km (O)- Offenbach und die dazugehörige PLZ(s): 63065,63067,63069,63071,63073,63075
                              ...und da freut sich der kleine Pkolb

                              Danke nochmal an euch alle, für euere Hilfe.

                              Bis dann

                              Pkolb
                              Zuletzt geändert von Pkolb; 21.10.2003, 11:28.

                              Kommentar


                              • #60
                                Also muss eine neue Funktion geschrieben werden bzw. die getinfo()- Funktion geändert werden, wovon geoclass jedoch abrät, da es mit Updates von der GeoClass.php Probleme geben kann.
                                Ich sach nur Class extends...

                                Kommentar

                                Lädt...
                                X