Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

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

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

или

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

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

Вы могли бы взглянуть на Геолокационный Город.Это бесплатно (GPL), но они говорят, что это не самое точное.

Более 99,5% на уровне страны и 79% на уровне города для США в радиусе 25 миль

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

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

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

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

Немного математики по нахождению расстояния "По прямой" - от точки к точке можно найти здесь и здесь (пример .NET).

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top