Как стать автором
Обновить

Комментарии 16

Если так требуется бесплатно, почему не использовать базу данных OSM, установив её локально у себя?

Тут возникает вопрос с качеством данных, но вариант интересный, стоит попробовать, спасибо!
Нужность массовой обработки адресов через загрузку файла, не очень практично, даже если сервис отвечает раз в секунду то вы можете одновременно поднимать несколько потоков. А если нужно уложиться в бесплатные лимиты, то в вашем случаи логично было бы развернуть локальный сервис на основе OSM например nominatim.org и кидать туда запросы, если точных данных нету то обращаться в облачные сервисы, при этом хорошо еще разделить адреса, например для России более актуальней использование yandex и dadata.ru, тем самым повысится скорость обработки обработки и точность результатов в разы. По такой методологии думаю можно будет 250.000 адресов получить за 1-2 минуты.
Качество номинатима не факт что будет хорошим (как впрочем, и большинства бесплатных аналогов). Но сама идея обработки в два этапа (сначала локальный сервис на базе OSM, потом если не нашли ничего — в яндекс или гугль) — она очень плодотворная.

И вообще-то, по-хорошему все результаты геокодера нужно кешировать у себя. Я вот с трудом могу себе представить задачу, где имеется всего 250 тыс адресов, и они никогда не изменяются. Как правило имеется постоянный поток (например клиентов), и если мы тот же самый адрес (с точностью до номера дома, квартира не имеет значения) уже геокодировали — то координаты у нас уже есть, нужно их просто из своей базы достать.
Абсолютно согласен насчет качества бесплатных сервисов. Тут зависит о задачи, которую требуется решить, для приложений с постоянным потоком пользователей логично использовать обычный прямой и обратный геокодер, тут вопросов нет. Но периодически бывают запросы от специалистов из ГИС отдела — выполнить геокодирование большого датасета и тут уже удобней все данные загрузить в облако и не тратить свое время.
Ну, поток тоже бывает разный. У нас помнится были оценки потока адресов примерно 50 миллионов в месяц для нашего приложения. У меня был примерно такой датасет одноразово, и получалось его геокодировать за раз — пусть это и занимало сутки. Для своего сервиса 250 тыс вообще не объемы, если уж на то пошло.

Но вообще я тут о другом. Если вы посмотрите скажем на ФИАС, вы увидите там некоторое большое, но ограниченное число адресов. То есть, если у вас даже поток 50 миллионов в месяц — большая его часть повторяется, потому что в РФ, например, просто нет столько домов. И они не растут, как грибы, новых домов в год появляется не так много. Если научиться понимать, что вот этот вот адрес у вас уже есть, задача сведется только к адресам изменившимся. А это меньше на порядок, если не на три.
Подскажите пожалуйста, как называется приложение, где идет анализ 50 миллионов адресов в месяц?
Оно никак не называется. Это наше внутреннее приложение.
Качество бесплатных такое как и платные, многие из платных сервисов берут данные из OSM, но зачастую используют дополнительное валидирование данных. Могу предположить что для Российских адресов у вас очень плохие результаты. Интересно бы проверить их. Если бы их выложили можно было бы посмотреть качество.
Согласен есть компании, которые полностью основываются на данных OSM c дополнительной обработкой, другие самостоятельно занимаются сбором, модерацией и интеграцией данных, поэтому тут однозначно утверждать сложно.

К сожалению нет возможности предоставить датасет в общий доступ так как данные не мои и это не уход от вопроса качества. Конечно, результаты варьируется в зависимости от мельчайших неточностей в адресе и тут уже идет речь о синтаксическом анализе исходного набора данных.

Ничего не имею против OSM, сам активно пользуюсь данными.

А как вы потом ошибки искали?
У меня был схожий опыт и было огромное количество ошибок из-за того что улицы были сокращены, например вместо Комсомольский проспект писали Компрос плюс большое количество опечаток в адресах. Или адреса в области, которых просто не было на картах.

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

Адреса которые не были найдены пробую геокодировать обычным геокодером с изменением текста адреса. Например у меня была ситуация когда геокодер не нашел «микрорайон Камвольно-суконный Комбинат», но при небольшой замене на «мкр Камвольно-суконный Комбинат», я получил правильные координаты.

Если имеются исходные координаты и геокодирование выполняется для теста сервиса, то можно легко вычислить расстояние между двумя результатами и разбираться где и почему большие ошибки.

Чаще всего исходных координат нет, поэтому прогоняю результаты через несколько сервисов геокодирования, анализирую результаты.
Крутая статья, на днях столкнулся с похожей проблем, очень круто посмотреть как с этим справляются другие :)
По теме, может не совсем подойти, но мне понравился функционал (не реклама) у locationIQ. Плюс наткнулся на очень обширную обертку вокруг большого количества сервисов geocoder.readthedocs.io/providers/LocationIQ.html, быть может будет полезна.
Модель с ограничением транзакций по дням и у Yandex, но более лояльная 25 тысяч запросов. Если умножить это число на количество дней в месяце, то получиться внушительная цифра – 750 тысяч.

Немного не так. Выдержка из условий использования сервиса:
В бесплатной версии JavaScript API и HTTP API Геокодера установлен лимит на общее число запросов. Запросы в считаются суммарно по следующей формуле:

число запросов в Геокодер + число запросов в Маршрутизатор + 5 × число запросов к Панорамам

Их количество не должно превышать 25 000 в сутки, из которых количество запросов к HTTP API Геокодера не должно превышать 1000 в сутки.


Т.е. всё-таки 1000 бесплатных запросов к геокодеру, что не так привлекательно.
Сам сейчас ищу провайдера. Here хорош, но по СНГ всё-таки Яндекс гораздо лучше и качественней показывает себя.
Да, тоже удивился когда увидел. Недавно только смотрел у яндекса и думаю, че это я так пропустил такой привлекательный пакет. Вот тоже выбираю api для работы с картами. Думаю остановиться всё таки на google map.
Это Яндекс относительно недавно лимиты урезал.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории