Обзор бесплатных сервисов геокодирования

На этой странице мы проведем обзор сервисов геокодирования.

Google Geocoding

  1. Подключаем 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.
  2. Формат запроса, чтобы найти по названию объекта его координаты.

     

  3. Обратная операция, по координатам найти объект.

    http://maps.googleapis.com/maps/api/geocode/json?latlng=55.75320193022759,37.61922086773683&sensor=false&language=ru
  4. Ответ приходит в виде json или xml. Подробнее об и в общем Google Geocoding  здесь: https://developers.google.com/maps/documentation/geocoding/intro?hl=ru

  5. Важный фактор, что 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

Примеры:

  1. Прмое геокодирование: http://nominatim.openstreetmap.org/search/Unter%20den%20Linden%201%20Berlin?format=json&addressdetails=1&limit=1&polygon_svg=1
  2. Обратое геокодирование: 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

Примеры:

  1. Обратное кодирование: 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 лицензии.

Примеры:

  1. Two Fishes geocoder (http://www.twofishes.net/) request (http://www.datasciencetoolkit.org/developerdocs#twofishes)
    1. Прямое кодирование: http://www.datasciencetoolkit.org/twofishes?query=unter+den+linden
    2. Обратное кодирование: http://www.datasciencetoolkit.org/twofishes?ll=52.5487429714954,13.3978343993255
  2. Python (http://www.datasciencetoolkit.org/developerdocs#python)
    1. Прямое геокодирование (можно установить через 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

Примеры:

  1. Прямое кодирование: http://demo.twofishes.net/static/geocoder.html?query=unter+den+linden
  2. Обратное кодирование: 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

Примеры:

  1. Прямое кодирование: https://api.opencagedata.com/geocode/v1/json?query=unter+den+linden+berlin&key=5354ffde8d1d9fb5d53582a4a5dff911
  2. Обратное кодирование: https://api.opencagedata.com/geocode/v1/json?q=52.5487429714954+13.3978343993255&key=5354ffde8d1d9fb5d53582a4a5dff911

GISGRAPHY (https://github.com/gisgraphy/gisgraphyhttp://www.gisgraphy.com/)

Возможный оффлайн сервис геокодирования, использует базу GEONAMES (описание и ссылки выше).

Ограничения: 
Gisgraphy сервер (core I7, 4Gb of memory):

Веб сервисЗапросов в секнду
Geocoding40 req/s
Street/reverse geocoding44 req/s
Find nearby74 req/s
Fulltext114 req/s
Address parser196 req/s

Покрытие: как в GEONAMES.

Поддерживаемые языки запросов: языки поддерживаемых стран (описанных в покрытии).

Политика использования: http://www.gisgraphy.com/license.html

Документация: http://www.gisgraphy.com/documentation/index.htm

Примеры:

  1. Прямое кодирование: http://services.gisgraphy.com//geocoding/geocode?address=unter+den+linden&couontry=DE&format=json
  2. Обратное кодироваие: http://services.gisgraphy.com/reversegeocoding/search?format=json&lat=52.5487429714954&lng=13.3978343993255