Как проверить существует ли улица?

Я хочу сделать бота который будет проверять существует ли улица которую ему напишут. Например я пишу боту: Красная пл., Москва, 109012. А он проверят существует ли эта улица на карте. Как мне это реализовать?


Ответы (2 шт):

Автор решения: PaveTranquil

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

Среди популярных API выделю следующие — отсортированы в порядке убывания точности для адресов России:

  1. Геокодер Яндекс.Карт (до 1000 запросов в сутки)
  2. Геокодер 2GIS (оговариваются отдельно)
  3. Геокодирование Google Карт (ежемесячно предоставляются бонусные кредиты на запросы)
  4. Nominatim от OpenStreetMap (полностью бесплатный)

Учтите, что каждая из платформ имеет свои ограничения по количеству и частоте запросов на бесплатных тарифах для тестирования и пет-проектов — я указал их в скобках. Поэтому для коммерческой разработки лучше в дальнейшем приобрести API-ключ с расширенным доступом.

→ Ссылка
Автор решения: eri

Можно загрузить ФИАС или КЛАДР к себе в базу и сверять по нему вплоть до номера квартиры. Но скорее всего форму ввода адреса придётся разбить на шаги: город, улица, дом.

https://github.com/MrPROtS/pg_fias

https://github.com/asyncee/fias2pgsql

→ Ссылка