2014-01-29 3 views
5

Мы получаем много данных и пытаемся создать систему в нашей базе данных, которая может преобразовывать информацию о широте долготы в город и страну. Мы не хотим использовать какой-либо из Google Api. Мы хотим настроить наш собственный сервер для этого.Как я могу сделать обратное геокодирование на моем собственном сервере?

ответ

4

Посмотрите на Nominatim. Это популярный сервис OpenStreetMap, способный отвечать на запросы геокодирования и обратного геокодирования. Также возможно set up your own Nominatim instance. Если вы хотите использовать публичный экземпляр вместо этого, убедитесь, что вы соблюдаете OSM Nominatim usage policy, потому что сервер работает на пожертвованных ресурсах. В качестве альтернативы вы можете использовать другой открытый экземпляр, например Nominatim instance provided by MapQuest.

3

Если вы планируете делать самостоятельно на сервере, самым простым способом я бы рекомендовал использовать БЕСПЛАТНУЮ базу данных городов, которая включает в себя широту/долготу центра города. Импортируйте набор данных в свою собственную базу данных.

Затем вы можете выполнить дистанционную проверку (запрос) между вашей точкой и центром в центре города, ища центр города, ближайший к точке. Только помните, в целях повышения производительности:

  1. магазина город широта/долготы в качестве геопространственной POINT() типа данных
  2. Создать геопространственной индекс для поля, которое имеет значение POINT() для (не в виде десятичной дроби!) в центре города.

Если вы используете MySQL, есть много ответов в StackOverflow о том, как это сделать (только поиск):

Вот некоторые БЕСПЛАТНЫЕ наборы данных:

Maxmind: http://www.maxmind.com/en/worldcities

Geonames.Org: http://www.geonames.org/export/

OpenGeoCode.Org (я соучредителем этого открытого проекта данных): http://www.opengeocode.org/download.php#cities

Смежные вопросы