>Hallo zusammen,
>
>ich hänge z.Z. in einem Projekt, dessen Zeitplanung
>extrem eng ist. Der eine oder andere von euch kennt
>das ja vielleicht selbst.
>
>Ich muß nun eine Umkreissuche integrieren.
>Also User gibt PLZ ein und definiert einen max. Range,
>z.B. 10 km und dann ab die Post...
>
>Wenn ich es richtig verstanden habe, was ich wild verstreut
>im Netz über opengeodb gefunden habe (so ne richtige, offizielle
>ausführliche Doku gibts nicht, oder?) dann reichen für meine
>Zwecke die
>opengeodb-0.2.3c-UTF8-text-orte.txt
>opengeodb-0.2.3c-UTF8-text-plz.txt
>Dateien, ist das korrekt?
>
Das sind Textdateien, keine Dateien für postgres...
>Könnte mir hier irgendjemand eine Postgre-kompatible
>SQL Anweisung für meinen Zweck zur Verfügung stellen?
>
Wenn Du postgres Dateien brauchst, dann nimm die postgres
bezeichnete Datei...
>Nehmen wir an, die Variablen
>$length
>$width
>$range
>seien gegeben und bezeichnen den Längen- und Breitengrad
>des Ausgangsortes und $range den max. Umkreis in km.
>
>Die SQL-Anweisung sollte einfach alle PLZs zurückliefern,
>die innerhalb des Umkreises liegen.
>
select distinct(plz.text_val)
from geodb_textdata plz, geodb_coordinates co
where (Funktion zur Berechnung der Entfernung mit co.lon,
co.lat, $length und $width) <= $range
and co.loc_id = plz.loc_id
and plz.text_type = [die Nummer für Postleitzahlen, ca. 50010007 o.ä.]
Die Funktion zur Berechnung der Entfernung steht in der GeoClass
oder auch auf den opengeodb Seiten (FAQ?). Die Nummer des Typs
Postleitzahl steht in der COnstants.txt aus dem Download Bereich
von opengeodb.
>Übrigens: ich kann leider kein PHP benutzen und die Abfrage muß
>so performant wie nur irgendmöglich sein, da die Hardware leider
>beschränkt ist aber trotzdem ganz schön traffic entstehen könnte.
>
Das sieht schon mal schlecht aus, weil man keine Indexe auf diese
Funktion aufbauen kann.
Da müßte man sich mittelfristig etwas anderes überlegen.
Grüße,
Thomas Mack
|