Получение координат с помощью сервиса Яндекса

В современном мире существует множество сервисов, которые работают с геоданными.

Прямое геокодирование решает проблему определения координат по адресу. Это может быть полезно во многих ситуациях, например:

  • Навигация — определение местоположения пользователя для построения маршрута.
  • Локализация контента — адаптация информации под географическое положение пользователя.
  • Анализ данных — изучение распределения определённых явлений или событий в пространстве.

Геокодер Яндекса — это инструмент, который позволяет получать информацию о географическом положении объектов на карте. С его помощью можно осуществлять преобразование адресов в координаты (геокодирование) и наоборот, а также получать различные географические данные, такие как название страны, региона, города, улицы и даже номер дома.

API Геокодер имеет свои ограничения и правила, которые необходимо учитывать при использовании сервиса. Для ознакомления с ними следует обратиться к документации по API.

Примечание: Лимит запросов к сервису — 1000 в день. Подробнее см. в документации.

Запустить демо

Установить локально

Примечание: Демопример имеет ограничение демонстрации всех возможностей при запуске на демостенде (Запустить демо). Рекомендуем установить пример локально.

Предварительная подготовка

Для доступа к API Геокодер необходимо получить ключ.

Получение ключа доступа

Для получение ключа потребуется выполнить следующие действия:

  1. Перейти в Кабинет разработчика
  2. Нажать Подключить API
  3. Выбрать API Геокодера
  4. Принять условия политики
  5. После появления сообщения об успешном подключении API нажать Перейти к API
  6. Скопировать API-ключ

Обратите внимание, что ключ будет активирован в течение 15 минут после получения.

Описание алгоритма

1. Импорт исходного набора адресов

В узле address.xlsx выполняется импорт из Excel-файла таблицы адресов.

2. Подготовка данных для Геокодера

Во входном порту переменных подмодели Подготовка данных задаются параметры для запроса к сервису Геокодер.

Имя Метка Значение
 apikey Ключ Вводится полученный ранее API-ключ
 format Формат запроса json

В подмодели Подготовка данных формируется тело запроса для обращения к API Яндекс Геокодера. Каждый адрес нумеруется, а затем соединяется с параметрами, указанными ранее.

а) Нумерация адресов

В узле Калькулятор адреса нумеруются с помощью функции RowNum.

б) Преобразование переменных в таблицу

С помощью узла Переменные в таблицу происходит преобразование списка переменных в таблицу. Значения переменных записываются в столбцы.

в) Соединение

К пронумерованным адресам присоединяются поля узла Переменные в таблицу. В мастере настройки узла Соединение заданы следующие параметры:

  • Дополнение до наибольшего набора - Повторять набор данных
  • Количество строк соответствует - Максимальному набору

3. Запрос к Геокодеру и извлечение координат

а) ↶REST:Яндекс диск

На странице Подключения настроено подключение REST-сервиса со следующими параметрами:

  • URL сервис: https://geocode-maps.yandex.ru/1.x/
  • Метод: GET
  • Параметры запроса:
Имя Тип данных
 apikey Строковый
 geocode Строковый
 format Строковый
  • Тип аунтентификации: Не требуется

В подмодели Запрос к сервису и получение координат выполняется REST-запрос к сервису Яндекс Геокодера, а затем преобразование ответа от сервиса для извлечения координат по указанным адресам.

б) Вызов REST-сервиса

В узле Вызов REST-сервиса выполняется запрос к API Яндекс Геокодер. Во входной порт источника данных запроса подается сформированный запрос из подмодели Подготовка данных.

В ответе сервис возвращает JSON-строку, содержащую геоданные по указанным адресам.

в) Слияние

В узле происходит Левое соединение ответов сервиса с соответствующими адресами.

г) Выделение координат

С помощью узла Калькулятор осуществляется извлечение координат из ответа JSON:

return JSON.parse(Response)["response"]["GeoObjectCollection"]["featureMember"][0]["GeoObject"]["Point"]["pos"];

Далее с помощью метода split идет разделение строки geoPoint на массив подстрок по пробелу. За счет этого получаем два поля: широту и долготу по указанным адресам.

return geoPoint.split(' ')[0];

return geoPoint.split(' ')[1];

Примечание: Обратите внимание, что калькулятор переключен в режим «JavaScript».

д) Очистка результирующего набора данных

В узле Параметры полей удаляются промежуточные поля, которые не требуются в финальной выборке.


Парсинг JSON

Скачайте и откройте файл в Loginom. При необходимости Loginom CE можно скачать бесплатно

Скачать демопример

Минимальные требования к системе:

  • Операционная система: Windows 10 и выше
  • CPU x64: 2 core 1
  • Оперативная память: 4 GB
  • Жесткий диск: 10 GB

1 Поддерживается работа на x64 процессорах Intel Core, AMD FX и более новых, содержащих инструкции SSE4.2, POPCNT.

Новости, материалы по аналитике, кейсы применения, активное сообщество