2014-01-29 9 views

Antwort

4

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.

3

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:

  1. Speichern Sie die Städte Breite/Länge als geospatial POINT() Datentypen
  2. 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