# PLZ-Umkreissuche...



## tomate (11. Februar 2009)

Hallo zusammen,

mich würde mal interessieren, wie man am besten eine
PLZ-Umkreissuche realisiert.

Wie man sowas mit OpenGeoDB realisiert, habe ich hier 
im Forum gefunden: http://www.tutorials.de/forum/php/2...berechnen-und-alle-koordinaten-db-suchen.html

Es gibt da ja aber auch noch die Möglichkeit das mit google-maps
zu realisieren. Und dann habe ich auch noch GeoNames 
(http://www.geonames.org/export/#ws) gefunden.

Davon mal abgesehen, daß ich mir grundsätzlich unsicher bin,
was ich verwenden soll, habe ich noch ein paar andere Fragen.

Benötige ich in Verbindung mit google-maps noch ein DB mit
Postleitzahlen?

Gibt es eine Möglichkeit die gefahrenen Kilometer angezeigt zu 
bekommen?

Hat jemand weitere Informationen/Beispiele zum Einlesen.

Viele Grüße!
Tomate


----------



## Michael Engel (11. Februar 2009)

Bei der Umkreissuche kann ich dir empfehlen der Geschwindigkeit halber eine gefahrene Kilometer zu verwenden sondern stattdessen Luftlinie.

Des weiteren, ich selbst habe bei einigen Projekten mit der Google API gearbeitet, das ist auch hübsch zum ggf. Visualisieren. Allerdings werden zu den Fixpunkten Die Längen- und Breitengrade gecasht. Da man nur 100.000 Abfragen im Monat machen darf und man sonst schnell an diese Grenzen stößt wenn ein paar Personen auf der Website surfen.

Die eigentliche Suche geht per mysql_query in einem Schritt:


```
$query = sprintf('SELECT *, ( 6367.45 * acos( cos( radians(%1$f) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(%2$f) ) + sin( radians(%1$f) ) * sin( radians( latitude ) ) ) ) AS distance
                                              FROM orte
                                              WHERE `online` = 1 
                                              HAVING distance < %3$d 
                                              ORDER BY distance', $lat, $long, $distance));
```
Die Ausgabe sucht alle umliegenden Punkte mit einer Distanz von bis zu xx Kilometer. Generell sollte dir aber klar sein das eine solche Suche gerade in kurzen Strecken relativ ungenau ist.


Zum Google Daten auslesen verwende ich eine gemoddete Version von Phoogle Maps 2.0 da die Ursprungsversion den Wünschen irgendwann nicht mehr gerecht wurde.


----------



## tomate (16. Februar 2009)

Hallo Michael,

wenn ich das richtig sehe, setzt die Abfrage die Du da machst
vorraus, das die Geographischen Daten (Latitude, Longitude)
in der db enthalten ist?!

Normalerweise hat man doch eine db mit den PLZ's und den 
entsprechenden geographischen Daten sowie eine db mit z. B.
den Händlern ohne geographische Daten.

Dann müsste mann beide abfragen und die Ergebnisse
verbinden und entsprechend auswerten.

Sehe ich das so richtig?

Viele Grüße!
Tomate


----------



## tomate (16. Februar 2009)

Hallo,

noch eine Frage zu den Google-Maps.

Das erste Ergebniss der Umkreissuche muss/sollte doch mit
einer eigenen db erfolgen, da ja sonst google z.B. 5000 mal
die Geodaten für die Fachhändler welche in meiner db stehen
zurückgeben muss?

Habe ich also eine locale db mit PLZ's und meinen Fachhändlern
und die Suchanfrage ergibt 10 Ergebnisse, schicke ich auch nur
diese an google, richtig?

Google verbrennt für diese Anfrage demnach auch nur 10 Query's
und es bleiben noch 900.990 übrig. Sehe ich das richtig?

Oder wie hast Du das gemacht?

Viele Grüße!
Tomate


----------



## Wodka2k (18. Mai 2011)

Hallo,

das hier habe ich gekauft. Funktioniert 1A:

Passt für VB, VBA, .Net

http://home.arcor.de/jochenbusse2/install_plzdb.exe

Gruß

Wodka2k


----------



## tombe (18. Mai 2011)

Mal abgesehen davon das der letzte Beitrag mehr als 2 Jahre her ist, soll man sich jetzt irgendeine EXE-Datei herunterladen und installieren ohne genau zu wissen was es ist.


----------



## Michael Engel (27. Mai 2011)

Wir haben einmalig alle etwa 1500 Adressen per Google in GeoKoordinaten auflösen lassen. Da nur die Postleitzahl auch mal deutlich wo anderst liegen kann. Dannach Manuell nachkorrigiert wo es nicht passte und behielten diese nun dauerhaft in der Datenbank. So muss pro Adressauflösung nur die neue Adresse um die der Umkreis gesucht wird, übertragen werden und die zurückgegebenen Koordniaten werden gegen die Datenbank gematcht.


----------

