Обзор бесплатных сервисов геокодирования
На этой странице мы проведем обзор сервисов геокодирования.
Google Geocoding
Подключаем Google Geocoding
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
Создаем котейнер:
<div id="map"></div>
Инициализируем карту:
var contentString = '<div id="content">Тут всё то про что должно быть рассказано</div>'; var infowindow = new google.maps.InfoWindow({ content: contentString }); var marker = new google.maps.Marker({ position: myLatlng, map: map, title: 'Uluru (Ayers Rock)' }); google.maps.event.addListener(marker, 'click', function() { infowindow.open(map,marker); }); function initialize() { var myLatlng = new google.maps.LatLng(-34.397, 150.644); var myOptions = { zoom: 8, center: myLatlng, mapTypeId: google.maps.MapTypeId.ROADMAP } var map = new google.maps.Map(document.getElementById("map"), myOptions); } google.maps.event.addListener(marker, 'click', function() { infowindow.open(map,marker); });// при клике на метку, показать окно с информацией, на карте map с привязкой к marker.
Формат запроса, чтобы найти по названию объекта его координаты.
Обратная операция, по координатам найти объект.
http://maps.googleapis.com/maps/api/geocode/json?latlng=55.75320193022759,37.61922086773683&sensor=false&language=ru
- Ответ приходит в виде json или xml. Подробнее об и в общем Google Geocoding здесь: https://developers.google.com/maps/documentation/geocoding/intro?hl=ru
- Важный фактор, что Google Geocoding работает только с google-картами.
Яндекс.Карты Геокодирование
Подробная документация с примерами здесь: https://tech.yandex.ru/maps/doc/geocoder/desc/examples/geocoder_examples-docpage/
Прямое кодирование: https://geocode-maps.yandex.ru/1.x/?geocode=Москва,+Тверская+улица,+дом+7
Обратное кодирование: https://geocode-maps.yandex.ru/1.x/?geocode=E134.854,S25.828
Эти примеры можно использовать прямо в браузере (ответ будет в xml)
Чтобы ответ пришел в виде json, нужно добавить format=json
https://geocode-maps.yandex.ru/1.x/?format=json&geocode=Москва, улица Новый Арбат, дом 24
Nominatim OpenStreetMap (http://wiki.openstreetmap.org/wiki/Nominatim)
Возможный оффлайн сервис.
Ограничения: один запрос в секунду.
Покрытие: скорее всего все страны данного списка http://wiki.openstreetmap.org/wiki/Name_finder:Abbreviations
Поддерживаемые языки запросов: языки поддерживаемых стран (описанных в покрытии)
Политика использования: https://wiki.openstreetmap.org/wiki/Nominatim_usage_policy
Документация: https://wiki.openstreetmap.org/wiki/Nominatim
Примеры:
- Прмое геокодирование: http://nominatim.openstreetmap.org/search/Unter%20den%20Linden%201%20Berlin?format=json&addressdetails=1&limit=1&polygon_svg=1
- Обратое геокодирование: http://nominatim.openstreetmap.org/reverse?format=json&lat=52.5487429714954&lon=13.3978343993255&zoom=18&addressdetails=1
GEONAMES (http://www.geonames.org/about.html)
GEONAMES - географическая база.
Ограничения: 2000 запросов в час. Нужно создать аккаунт (в примерах используется созданный тестовы аккаунт аккаунт).
Покрытие: http://www.geonames.org/countries/
Поддерживаемые языки запросов: языки поддерживаемых стран (описанных в покрытии).
Политика использования: http://www.geonames.org/export/
Документация: http://www.geonames.org/export/ws-overview.html
Примеры:
- Обратное кодирование: http://api.geonames.org/findNearbyJSON?lat=52.5487429714954&lng=13.3978343993255&username=GALIAF95
(в качестве username передается логин зарегестрированного аккаунта http://www.geonames.org/)
DATASCIENCETOOLKIT (http://www.datasciencetoolkit.org/)
Набор утилит для работы с данными, основанный на сервисах с открытым исходным кодом.
По умолчанию все запросы использует сервер http://www.datasciencetoolkit.org/ , но можно поднять свой сервер (на сайте есть инструкция с использованием vagrant http://www.datasciencetoolkit.org/developerdocs#setup).
Ограничения: скорее всего такие же как и у Nominatim OpenStreetMap, для Two Fishes описание ниже.
Покрытие: регионы из GEONAMES и улицы из OPENSTREETMAPS.
Поддерживаемые языки запросов: языки поддерживаемых стран (описанных в покрытии).
Документация: http://www.datasciencetoolkit.org/developerdocs
Политика использования: MIT и GPL лицензии.
Примеры:
- Two Fishes geocoder (http://www.twofishes.net/) request (http://www.datasciencetoolkit.org/developerdocs#twofishes)
- Прямое кодирование: http://www.datasciencetoolkit.org/twofishes?query=unter+den+linden
- Обратное кодирование: http://www.datasciencetoolkit.org/twofishes?ll=52.5487429714954,13.3978343993255
- Python (http://www.datasciencetoolkit.org/developerdocs#python)
Прямое геокодирование (можно установить через pip)
import dstk dstk = dstk.DSTK() dstk.street2coordinates('2543 Graystone Place, Simi Valley, CA 93065')
Two Fishes geocoder (http://www.twofishes.net/)
Возможный оффлайн сервис, использует базу geonames (описание и ссылки выше).
Ограничения: 100 запросов в секунду для прямого кодирования и 1000 запросов в секунду - для обратного.
Покрытие: как в GEONAMES.
Поддерживаемые языки запросов: языки поддерживаемых стран (описанных в покрытии).
Политика использования: http://www.apache.org/licenses/LICENSE-2.0
Документация: https://github.com/foursquare/twofishes/tree/master/docs
Примеры:
- Прямое кодирование: http://demo.twofishes.net/static/geocoder.html?query=unter+den+linden
- Обратное кодирование: http://demo.twofishes.net/static/geocoder.html?ll=52.5487429714954,13.3978343993255
OpenCage Geocoder (http://geocoder.opencagedata.com/)
API, также как и DATASCIENCETOOLKIT, использующее различные сервисы с открытым исходным кодом для геокодирования, только более современная. Необходимо создать аккаунт (в примерах используется ключ от созданного тестового аккаунта)
Ограниения: 2500 запросов в день (http://geocoder.opencagedata.com/pricing.html).
Покрытие: регионы из GEONAMES и улицы из OPENSTREETMAPS.
Поддерживаемые языки запросов: языки поддерживаемых стран (описанных в покрытии).
Политика использования: http://creativecommons.org/licenses/by-sa/3.0/
Документация: http://geocoder.opencagedata.com/api.html
Примеры:
- Прямое кодирование: https://api.opencagedata.com/geocode/v1/json?query=unter+den+linden+berlin&key=5354ffde8d1d9fb5d53582a4a5dff911
- Обратное кодирование: https://api.opencagedata.com/geocode/v1/json?q=52.5487429714954+13.3978343993255&key=5354ffde8d1d9fb5d53582a4a5dff911
GISGRAPHY (https://github.com/gisgraphy/gisgraphy, http://www.gisgraphy.com/)
Возможный оффлайн сервис геокодирования, использует базу GEONAMES (описание и ссылки выше).
Ограничения:
Gisgraphy сервер (core I7, 4Gb of memory):
Веб сервис | Запросов в секнду |
Geocoding | 40 req/s |
Street/reverse geocoding | 44 req/s |
Find nearby | 74 req/s |
Fulltext | 114 req/s |
Address parser | 196 req/s |
Покрытие: как в GEONAMES.
Поддерживаемые языки запросов: языки поддерживаемых стран (описанных в покрытии).
Политика использования: http://www.gisgraphy.com/license.html
Документация: http://www.gisgraphy.com/documentation/index.htm
Примеры: