Ich habe eine Datenbank mit 300.000 Adressen, die auf der Karte angezeigt werden sollen. Ich weiß, wenn ich die gesamte Adresse geocodiere, ist das für mich zu teuer. Ich habe mich also gefragt, ob es möglich ist, die Adresse im laufenden Betrieb / in Echtzeit geocodiert zu speichern. Wenn ein Benutzer eine Adresse (eine Eigenschaftsadresse) auswählt, durchsucht er die Datenbank und codiert die Adresse geocodiert und ordnet sie dann zu andere Attribute.
Es wäre wirklich schön, wenn Sie einen Code, ein Konzept oder etwas anderes teilen könnten. Übrigens ist mein Backend auf MySQL, das von Joomla unterstützt wird.
google-maps
geocoding
php
mysql
google-maps-api
user1089553
quelle
quelle
Antworten:
Mehul, ich habe in der Adressprüfungsbranche mit einer Firma namens SmartyStreets gearbeitet. Es gibt viele Geokodierungsdienste, aber nur wenige unterstützen die Stapelverarbeitung mit dem von Ihnen benötigten Volumen. (Google und andere erlauben keine Massenverwendung ihrer API oder das Speichern / Zwischenspeichern von Ergebnissen.)
Wenn Sie zu Ihrer MySQL-Datenbank gehen und einen Export Ihrer Tabelle ausführen, die die Adressen enthält, speichern Sie diese beispielsweise als CSV-Datei. Sie können es dann mit dem SmartyList- Web-Tool oder dem Befehlszeilen-Tool verarbeiten . Wie ich bereits sagte, gibt es mehrere Dienste, aber Sie möchten vermutlich auch etwas, das die Existenz von Adressen überprüft (daher der Grund für die Geokodierung) - wenn die Adresse falsch oder unvollständig ist, sind es auch die Geokodierungsergebnisse . Dies tun nur wenige Dienste.
LiveAddress ist ein Dienst, der vom USPS CASS-zertifiziert ist . Es gibt einige, die Ihre Recherchen durchführen, aber Sie möchten etwas "on-the-fly" / schnell und kostengünstig, also empfehle ich LiveAddress erneut. Es überprüft nicht nur die Adresse, sondern erledigt auch alles, was Sie benötigen. Dies beinhaltet die Angabe von Lat / Lon-Informationen und auch die Genauigkeit der Geokodierungsergebnisse. Es ist alles webbasiert und wird in kürzester Zeit Dutzende Millionen Datensätze verarbeiten (siehe diese Frage als Referenz ).
Wenn Sie während der Benutzerinteraktion weitere Adressen geocodieren müssen, verfügt LiveAddress auch über eine API- Version, die praktisch alle Funktionen unterstützt und die Stapelverarbeitung im laufenden Betrieb unterstützt, jedoch als Abonnement und nicht als einmaliges Abonnement bezahlt wird Zahlung.
quelle
Wenn Sie Python mögen, können Sie die GeoPy-API in Kombination mit den GDAL-Python-Bindungen oder Fiona verwenden und ein sehr einfaches Skript wie dieses erstellen, um die Adressen in ein Punkt-Shapefile zu konvertieren.
Dadurch wird eine Datei mit dem Namen "address_to_geocode" geografisch lokalisiert und ein Ausgabe-Shapefile mit dem Namen "my_output.shp" im Ordner "my_output" erstellt:
Die Datei soll nur eine Zeile für eine einzelne Adresse enthalten, wie zum Beispiel:
Hier verwende ich die Google-API, aber mit GeoPy ist es sehr einfach, auf andere APIs wie Yahoo! GeoNames oder MapPoint umzusteigen .
quelle
Eine andere Möglichkeit, um Ihr Problem zu lösen, besteht darin, Ihren Datensatz in Fusionstabellen zu importieren und das Adressfeld als Speicherort festzulegen. Dann werden die Punkte automatisch geocodiert. Danach können Sie die Daten als KML exportieren.
Oder ... Sie können alternativ ein PHP-Skript schreiben, um den Yahoo-Geocoder zu verwenden, der ein Limit von 50.000 Datensätzen hat. Früher oder später haben Sie alle Ihre Punkte in Ihrer Datenbank geocodiert.
Ich hoffe das hat geholfen!
quelle
Mit Abstand der beste und einfachste Geocoder, den ich je verwendet habe: https://pypi.python.org/pypi/geocoder/1.8.0 Bing Maps, Google Maps, OSM usw.
quelle
Vielleicht nicht die beste Antwort auf Ihre Frage, aber Sie können BatchGeo ausprobieren. Die kostenlose Version würde dich sehr leiden lassen, war aber trotzdem gut genug für meine Arbeit. Wir haben jedoch die Pro-Version gekauft.
Wenn Sie Koordinaten aus einer KML-Datei abrufen möchten, müssen Sie diese später in ArcGIS importieren.
quelle
Ich habe erfolgreich Geopy verwendet, das den Google Geocoding-Webdienst verwendet. Es funktioniert perfekt für bis zu 2.000 Punkte pro 24 Stunden.
quelle
Matej, das ist, weil Google API erlauben, bis zu 2.5k pro Tag zu ziehen.
In Bezug auf die Geo-Lösung wurde Batch noch nicht als unterstützt befunden, da es nach meiner Überprüfung des Geo-Python-Codes jedes Mal, wenn er eine neue Koordinate anfordert, eine offene Verbindung zu haben scheint. 300 KB bleiben wahrscheinlich für immer hängen (wahrscheinlich mit Fehler 400).
Das Spiel mit Poligons sollte den Trick machen, aber es hängt davon ab, was Ihr "Spielplatz" ist, ob es sich um 1 Land oder n Länder handelt.
Für 1 Land sollten die Polygone ziemlich gut funktionieren.
In n Ländern funktioniert die Lösung nicht, da die Erfassung jedes Mal länger dauert, wenn Sie ein anderes Land hinzufügen. Das beste Aproch, um es zu tun, ist faul Last.
=> beginne mit der Polygon-Idee, alles in einem anderen Land, erstelle eine große Datenbanktabelle, um die Daten zu speichern, schließlich wirst du die Daten speichern, die du brauchst, nehme ich an.
quelle
Wenn Sie es mit PHP machen wollen - MySQL ist hier eine Lösung, die für mich funktioniert hat:
quelle
Probieren Sie diese Geokodierungs-API aus . Es ist kostenlos für den kleinen Gebrauch, aber wenn Sie mehr wollen, werden Sie dafür bezahlt. Es ist jedoch billig und Sie können es sehr leicht verarbeiten, ich verarbeite Millionen pro Monat durch sie.
quelle
Sie können Ihre Daten als Textdatei speichern (ein Datensatz pro Zeile) und sie dann mithilfe dieses Dienstes stapelweise geocodieren: http://geocode.xyz/batch (funktioniert in den meisten europäischen Ländern)
Sie können auch Ihren eigenen Code schreiben, um auf die REST / JSON-API zuzugreifen: http://geocode.xyz/api (kostenlos für unbegrenzte Suchvorgänge).
quelle
Mappointing-Tools verwenden (Kartenzeigetool | Batch-Geocoding-Tool ( http://www.mappointing.com/ )) In diesem Tool können Sie die Daten mit dem kostenlosen API-Schlüssel von Google Map verarbeiten. Und auch dieses Tool bietet Entfernungsberechnung und Ortssuche.
quelle