Иными словами, очень часто при автоматизации нам приходится сталкиваться с проблемой, когда адрес в программу приходит совсем в произвольной форме. При этом, если мы хотим его в дальнейшем куда-то передавать — его нужно привести к «понятному» для стороннего сервиса виду: адрес в виде строки разбить на улицу, город, область, страну. Также есть много внешних сервисов (например, служб доставки), для которых нужен индекс (тот самый, который мы заполняем на почтовых конвертах).
На данный момент я с уверенностью могу рекомендовать 2 сервиса для стандартизации адресов:
1) Яндекс — имеет лимит 1 000 бесплатных запросов в сутки. Геокодер позволяет обрабатывать как российские, так и зарубежные адреса. Если Вы будете часто превышать лимиты, то примерно на 5-й раз вас могут заблокировать в сервисе.
2) Dadata – имеет лимит 10 000 бесплатных запросов в сутки. Однако, в отличие от Яндекса работает только с российскими адресами.
Помимо стандартизации адреса, оба сервиса умеют делать геокодирование, то есть получать долготу и широту точки на карте. Существует множество вариантов, как это можно использовать, один из примеров — поиск в радиусе N километров от адреса.
В одном из моих проектов ежедневно обрабатывается более 40 000 адресов. Естественно, никаких лимитов на такой объем информации вам не хватит. Для решения данной задачи вам придется вести реестр ключей, учитывать количество запросов по каждому, ну и, естественно, менять их в автоматическом режиме. Наиболее удобным решением будет использование регистра сведений для хранения данных о ключах, лимитах, счетчиках и приоритетах.
Я использую как Dadata, так и Yandex. Зачем, спросите вы? Дело в том, что в качестве адресов для обработки приходят как российские, так и зарубежные адреса (чаще всего СНГ). Поэтому, кроме учета лимита на ключах, алгоритм определяет, какой именно сервис лучше использовать для того или иного адреса.
Теперь давайте рассмотрим, как получить бесплатный ключ «Яндекса» для геокодирования.
1) В первую очередь нам нужно зарегистрировать почтовый ящик на Яндексе. Как это сделать, думаю, не имеет смысла показывать. На всякий случай оставлю ссылку на регистрацию: https://passport.yandex.ru/registration?mode=register
2) Далее нужно перейти по ссылке https://developer.tech.yandex.ru/ и нажать на кнопку «Подключить API»
3) На следующем шаге нам нужно выбрать «JavaScript API и HTTP Геокодер» и нажать «Продолжить»
4) Далее нам нужно заполнить небольшую анкету, немного рассказать о себе. Если вы хотите «потестировать» сервис, тогда стоит выбрать в качестве целей «учебный проект» (ну и сказать, что вы физ. лицо).
5) На последнем шаге нам нужно нажать на кнопку «перейти к API»
После регистрации мы увидим окно с ключом API, который мы и будем использовать для работы с сервисом.
Важно понимать, что ключ начинает работать не моментально. Обычно ключ активируется в течение 30 минут. Наберитесь терпения.
К данной публикации прикреплена обработка, которая демонстрирует работу с Яндекс Геокодером. В поле ввода вы можете ввести адрес в произвольной форме, а в качестве результата получить структуру, в качестве ключей которой будут ключевые составляющие адреса.
Вот так будет выглядеть результат работы:
Ключ API нужно ввести в событие "ПриСозданииНаСервере"
Тестирование проводилось на релизах: 8.3.17.2306 (X32/x64), 8.3.21.1302 (X32/x64), 8.3.24.1368 (X32/x64).