Библиотеки геокодирования

Я использую python, и мне нужно сопоставить такие места, как «Блумингтон, Индиана», с координатами GPS, чтобы я мог измерять расстояния между ними. Какие библиотеки / API геокодирования вы рекомендуете? Также приветствуются решения на других языках.

Те из нас, кто не использует Python, но все еще интересуется геокодированием, будут рады получить более широкие ответы.

Norman Ramsey 17.12.2008 06:43
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
22
1
13 659
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Вы можете взглянуть на GeoLite City. Он бесплатный (GPL), но говорят, что не самый точный.

Over 99.5% on a country level and 79% on a city level for the US within a 25 mile radius

Это все еще может подойти вам, в зависимости от ваших потребностей.

Ответ принят как подходящий

Google Maps API поддерживает геокодирование и Python Cookbook имеют простой пример для доступа к нему из Python (хотя рецепт не использует API напрямую, а только простые URL-адреса maps.google.com).

И у Google, и у Microsoft есть API, к которым очень легко подключиться. Есть некоторые ограничения, но они довольно щедры. Вы также можете посмотреть http://geocoder.us/. Мне не известно о каких-либо бесплатных сервисах геокодирования, которые были бы полезны (и я потратил время на поиски!)

Geopy позволяет выбирать из нескольких геокодеров (включая Google, Yahoo, Virtual Earth).

Вы можете использовать веб-API, например карты Google, чтобы найти координаты. Затем, если вам просто нужно рассчитать расстояния (по прямой), вы можете применить есть формула, чтобы получить довольно точные результаты.

Геокодер USC WebGIS (https://webgis.usc.edu) бесплатно. У него есть API, которые вы можете вызывать из скриптов или загружать и обрабатывать базы данных (mdb, csv и т. д.). Уровни точности зависят от того, где находятся ваши адреса. Например, в округе Лос-Анджелес доступны центроиды участков, а в других частях страны - только TIGER / Lines. Карта покрытия источников справочных данных в настоящее время недоступна, но находится в разработке. Базовые инструменты планируется открыть с открытым кодом в будущем, как только будет завершена новая разработка.

На днях наткнулся на http://www.geonames.org/. Фактически вы можете загрузить все данные для почтовых индексов, включая широту / долготу и т. д., Даже для коммерческого использования, чтобы избежать необходимости подключаться к внешним источникам. Я думаю, что вы можете сделать то же самое для названий городов (данные почтового индекса уже связаны с названиями подрубрик).

Немного математики о нахождении расстояния «Как летит ворона» - прямо от точки к точке можно найти здесь и здесь (пример .NET).

Вы можете лучше посмотреть в модуле Geopy, и его стоит использовать, так как он содержит карту Google, геокодеры карты Yahoo, с помощью которых вы можете реализовать геокодирование.

Веб-сервис Google очень прост в использовании. Просто введите запрос в URL-адрес. Чтобы было еще проще / ленивее, я беззастенчиво рекламирую пигеокодер, оболочку Python для Google Geocoding. Тогда вы можете просто сделать что-нибудь вроде

print Geocoder.geocode("Montreal, Canada")[0].coordinates

чтобы получить кортеж с координатами. Вы также можете делать такие вещи, как

Geocoder.geocode("sushi, San Francisco").count

или же

Geocoder.geocode("sushi, San Francisco")[0].postal_code

Xster, похоже, ваша библиотека не работает, когда геокодирование адресов, содержащих диакритические знаки ("éèôœö"), не возвращает результатов. Я полагаю, это потому, что он кодирует их urlencodes, а Google принимает эти символы как есть.

Termos 31.10.2014 15:08

Другие вопросы по теме