Sabine M.: opengeodb

Hallo,

Ein kunde Wünscht eine PLZ oder Orts Umkreissuche.
Die OpenGeoDB ist ja dafür geeignet, jedoch hab ich absolut kein Plan wie ich vorgehen muss.
Auf SourceForge.net gibt es den Code ja zum Download, aber ich weis nicht, was ich runterladen soll.

Es hat bestimmt schon jemand eine fertige Lösung, oder?

Im Prinzip soll das Formular so aussehen:

Bitte geben Sie ihre PLZ oder Ort ein: ____
Beratungsstellen im Umkreis von: 10,20,50,100 KM
[SUCHEN]

Ich hoffe mir kann jmd helfen.

Die Sabine ;)

  1. Hello,

    Bitte geben Sie ihre PLZ oder Ort ein: ____
    Beratungsstellen im Umkreis von: 10,20,50,100 KM

    Pythagoras?

    Soweit ich das nachvollziehen kann, sollte man da mit den (entzerrten/verzerrten) Gauß-Krüger-Koordianten rechnen können und solange es sich nur im Kilometer-Differenzen handelt, in DE auch mir den Längen- und Breitengraden, so als wären sie linear...

    Harzliche Grüße vom Berg
    esst mehr http://www.harte-harzer.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Hi Tom,

      Entschuldige bitte, Ich verstehe deine Antwort nicht so ganz. Ich kenne den Aufbau dieser OpenGeoDB doch gar nicht und weis absolut nicht wie schwer oder einfach es ist eine solche Umkreissuche zu realisieren.

      Sabine

      1. Hello,

        Entschuldige bitte, Ich verstehe deine Antwort nicht so ganz. Ich kenne den Aufbau dieser OpenGeoDB doch gar nicht und weis absolut nicht wie schwer oder einfach es ist eine solche Umkreissuche zu realisieren.

        Gerne.

        Aber Pythagoras kennst Du?

        Die OpenGeo-DB enthält Längen- und Breitengrad, aus denen man in unseren Breiten vereinfachend eine plane X- und eine Y-Koordinate berechnen kann. Aus diesen kann  man dann den Abstand zwischen zwei Punkten bestimmen.

        Wie gesagt, wenn Du sphärische Geometrie benötigst, wird es komplizierter. Scheint mir aber nicht notwendig zu kein hier.

        Harzliche Grüße vom Berg
        esst mehr http://www.harte-harzer.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Aber Pythagoras kennst Du?

          :) hmmm... sagt mir was... Dreiecke berechnen und so, stimmts :)

          Die OpenGeo-DB enthält Längen- und Breitengrad, aus denen man in unseren Breiten vereinfachend eine plane X- und eine Y-Koordinate berechnen kann. Aus diesen kann  man dann den Abstand zwischen zwei Punkten bestimmen.

          Aha, Jetzt kommen wir der sache schon näher; Scheint mit komplizierter zu sein als ich dachte.

          Da ich mich nicht in der lage fühle dies zu realisieren, brüchte ich mal eine Preisvorstellung von dir, falls du das gerne für mich realisieren möchtest. Diese Preisvorstellung würde ich einfach an meinen Kunden weitergeben, da er auf ein Angebot von mir wartet.

          Du hörst dich so an als ob du die DB schon getestet hast und eine solche umkreissuche schon Programmiert hast, deshalb denke ich das du nicht viel arbeit damit haben wirst.

          Sabine M.

          1. Hello,

            Da ich mich nicht in der lage fühle dies zu realisieren, brüchte ich mal eine Preisvorstellung von dir, falls du das gerne für mich realisieren möchtest. Diese Preisvorstellung würde ich einfach an meinen Kunden weitergeben, da er auf ein Angebot von mir wartet.

            Nicht unbedingt. Im Moment habe ich gerade keine Zeit für sowas. Aber ich könnte mir vorstellen, dass das hier jemand für Dich unter fertigen Scripten rausfinden kann, also eins, das möglichst genau funktioniert.

            Harzliche Grüße vom Berg
            esst mehr http://www.harte-harzer.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
          2. Holladiewaldfee,

            prinzipiell ist's gar nicht schwer:

            Zunächst liest Du aus der Datenbank die Längen- und Breitenangaben für den Ort, um den gesucht werden soll aus. Nehmen wir dann mal an, der ganze Krempel stünde in einem Array $aOrt.

            define('EARTHRADIUS', 6372);
            $iDistance = 20; # 20km Umkreis

            Dann kannst Du folgende Query auf die GeoDB loslassen:

            'SELECT geodb_locations.name,
            IFNULL((ACOS((SIN(RADIANS('.$aOrt['breite'].'))*SIN(RADIANS(geodb_locations.breite)))

            • (COS(RADIANS('.$aOrt['breite'].'))*COS(RADIANS(geodb_locations.breite)) * COS(RADIANS(geodb_locations.laenge)-RADIANS('.$aOrt['laenge'].'))))* '.EARTHRADIUS.') ,0) AS distance
              FROM geodb_locations
              WHERE
              IFNULL((ACOS((SIN(RADIANS('.$aOrt['breite'].'))*SIN(RADIANS(geodb_locations.breite)))
            • (COS(RADIANS('.$aOrt['breite'].'))*COS(RADIANS(geodb_locations.breite)) * COS(RADIANS(geodb_locations.laenge)-RADIANS('.$aOrt['laenge'].')))) * '.EARTHRADIUS.') ,0) < '.$iDistance.'
              ORDER BY geodb_locations.name ASC';

            Ich hoffen daß es die Query tut, das ist eine verkürzte Version aus einem Script von mir. Freilich mußt Du die Query noch erweitern und die so gefundenen Datensätze vergleichen mit einer weiteren Tabelle, in der die PLZs der Beratungsstellen stehen.

            Also beispielsweise:

            'SELECT geodb_locations.name, tolle_plz_tabelle.irgendwaswichtiges,
            IFNULL((ACOS((SIN(RADIANS('.$aOrt['breite'].'))*SIN(RADIANS(geodb_locations.breite)))

            • (COS(RADIANS('.$aOrt['breite'].'))*COS(RADIANS(geodb_locations.breite)) * COS(RADIANS(geodb_locations.laenge)-RADIANS('.$aOrt['laenge'].'))))* '.EARTHRADIUS.') ,0) AS distance
              FROM geodb_locations, tolle_plz_tabelle
              WHERE
              IFNULL((ACOS((SIN(RADIANS('.$aOrt['breite'].'))*SIN(RADIANS(geodb_locations.breite)))
            • (COS(RADIANS('.$aOrt['breite'].'))*COS(RADIANS(geodb_locations.breite)) * COS(RADIANS(geodb_locations.laenge)-RADIANS('.$aOrt['laenge'].')))) * '.EARTHRADIUS.') ,0) < '.$iDistance.'
              AND INSTR(geodb_locations.plz, tolle_plz_tabelle.plz)
              ORDER BY geodb_locations.name ASC';

            Bitte beachte, daß Du aufgrund des Formats der GeoDB die Postleitzahlen mit INSTR vergleichen mußt.

            Ciao,

            Harry
             (zefix, kaum ist man mal ein halbes Jahr weg schon funktioniert alles irgendwie anders ... "um unter diesem Namen posten zu können müssen sie sich authentifizieren" ... ja hab ich doch, sackzement)

            --
              Irgendwann kommt die Waldfee - oder auch nicht ... (Projektphase: Keine Ahnung)
              Bis dahin:
              Ski- und Bergtouren in den Tölzer Voralpen und im Karwendel
            1. Harry
              (zefix, kaum ist man mal ein halbes Jahr weg [..]

              Mensch, 42, willkommen zurück! Neulich noch gewundert, wo die Berge abgeblieben sind..

              Viele Grüße!
              _ds

              1. Holladiewaldfee,

                Mensch, 42, willkommen zurück! Neulich noch gewundert, wo die Berge abgeblieben sind..

                jo, die Berge sind noch da (zumindest waren sie es vor zwei Monaten noch - bin noch nicht zum Nachschaun gekommen) und ich hab 'ne zeitlang kaum Zeit für irgendwas gehabt. Aber ich habe mir vorgenommen zumindest wieder ab und zu hier reinzuschauen ;-)

                Ciao,

                Harry
                 (der sich seinen Namen doppelt geschützt hatte und deswegen nicht unter diesem Posten konnte ... ganz toll)

                --
                  Irgendwann kommt die Waldfee - oder auch nicht ... (Projektphase: Keine Ahnung)
                  Bis dahin:
                  Ski- und Bergtouren in den Tölzer Voralpen und im Karwendel
            2. Hallo,

              Das sieht ja schon mal super aus. Hab gerade _versucht_ die DB zu kopieren - erfolglos, denn Sie ist fast 25 MB groß.
              Steht die OpenGeoDB irgendwo Open im Inet?
              Ich glaub auch das mein Hoster nicht sehr glücklich über diese GeoDB sein wird, wenn ich Sie kopieren werde.
              Hab erst versucht über PHPmyAdmin die SQL file auszuführen, bis ich dann die MaxFile Grenze gesehen hab. Und dann beim FTP Upload hab ich erst gesehen dass Die DB ja so groß ist.

              Jetzt kommen schon wieder die ersten Probleme ohne überhaupt angefangen zu haben, das liebe ich so an der Branche...

              Sabine M.

              1. Welche File muss ich denn überhaupt runterladen?

                < http://sourceforge.net/project/showfiles.php?group_id=132421>

                Ich hab Download opengeodb-0.2.3d-UTF8-mysql.zip runtergeladen?

                (Ich brauche auch nur Deutschland)

                Sabine

                1. Holladiewaldfee,

                  Ich hab Download opengeodb-0.2.3d-UTF8-mysql.zip runtergeladen?

                  Das ist schonmal eine gute Idee ;-)

                  Ciao,

                  Harry

                  --
                    Irgendwann kommt die Waldfee - oder auch nicht ... (Projektphase: Keine Ahnung)
                    Bis dahin:
                    Ski- und Bergtouren in den Tölzer Voralpen und im Karwendel
              2. Holladiewaldfee,

                Das sieht ja schon mal super aus. Hab gerade _versucht_ die DB zu kopieren - erfolglos, denn Sie ist fast 25 MB groß.
                Steht die OpenGeoDB irgendwo Open im Inet?

                Eher unwahrscheinlich ...

                Ich glaub auch das mein Hoster nicht sehr glücklich über diese GeoDB sein wird, wenn ich Sie kopieren werde.

                Naja, wegen 25mb soll er mal nicht rumheulen. Es sei denn natürlich Du hast einen dieser Accounts die einem nur 1Mb oder so zugestehen ... dann schaut das in der Tat eher mies aus. Dann kannst Du höchstens noch versuchen, die DB zu "schrumpfen", also alle unnötigen Spalten aus der Datenbank löschen. Das wären in Deinem Fall dann alle außer Länge, Breite und PLZ.

                Hab erst versucht über PHPmyAdmin die SQL file auszuführen, bis ich dann die MaxFile Grenze gesehen hab. Und dann beim FTP Upload hab ich erst gesehen dass Die DB ja so groß ist.

                Dann wirst Du sie über die Konsole einlesen müssen.

                Ciao,

                Harry

                --
                  Irgendwann kommt die Waldfee - oder auch nicht ... (Projektphase: Keine Ahnung)
                  Bis dahin:
                  Ski- und Bergtouren in den Tölzer Voralpen und im Karwendel