Wir bekommen eine Menge Daten und versuchen, ein System in unserer Datenbank zu erstellen, das die Breiten- und Längengradinformationen in Stadt und Land umwandeln kann. Wir wollen keine der Google APIs verwenden. Wir möchten unseren eigenen Server dafür einstellen.Wie kann ich Reverse Geocoding auf meinem eigenen Server durchführen?
Antwort
Werfen Sie einen Blick auf Nominatim. Es ist ein beliebter Dienst für OpenStreetMap, mit dem Geocodierungs- und Reverse-Geocoding-Anfragen beantwortet werden können. Es ist auch möglich, set up your own Nominatim instance. Wenn Sie stattdessen eine öffentliche Instanz verwenden möchten, müssen Sie die OSM-Nummer Nominatim usage policy einhalten, da der Server auf gespendeten Ressourcen ausgeführt wird. Alternativ können Sie eine andere öffentliche Instanz verwenden, zum Beispiel die Nominatim instance provided by MapQuest.
Wenn Sie planen, ein Do-it-yourself auf einem Server zu tun, wäre die einfachste Möglichkeit, eine kostenlose Datenbank mit Städten zu verwenden, die einen Breiten-/Längengrad des Stadtschwerpunkts enthalten. Importieren Sie den Datensatz in Ihre eigene Datenbank.
Sie können dann eine Distanzprüfung (Abfrage) zwischen Ihrem Punkt und dem Flächenschwerpunkt durchführen, der nach dem Stadtschwerpunkt sucht, dem der Punkt am nächsten ist. Denken Sie daran, für Leistungszwecke:
- Speichern Sie die Städte Breite/Länge als geospatial POINT() Datentypen
- erstellen geospatial Index für das Feld, das den POINT() Wert hat (nicht als Dezimalzahl!) das Stadtzentrum.
Wenn Sie MySQL verwenden, gibt es eine Menge Antworten in Stackoverflow auf, wie dies zu tun (nur die Suche):
Hier sind einige freie Datensätze:
MaxMind: http://www.maxmind.com/en/worldcities
Geonames.Org: http://www.geonames.org/export/
OpenGeoCode.Org (ich bin ein Mitbegründer des Projekts Open Data): http://www.opengeocode.org/download.php#cities