Как мы решали задачу по оптимальному геокодингу адреса для сервиса доставки
На схеме ниже представлены цели и предполагаемый путь решения:
Для решения задач геокодирования мы рассматривали следующие сервисы:
- Yandex
- DaData
- Google Maps
- OSM (Open Street Maps)
Стоит отметить, что три первых сервиса предоставляют платный доступ к данным.
Шаг1: Проверка определения геопозиции по адресам
Рассмотрим на примерах, как сервисы идентифицировали геопозицию по заданному адресу
Пример 1: Россия Владимирская обл, г Ковров, ул Машиностроителей, дом 8
Результат: Яндекс и DaData определили адрес точно вплоть до дома, Google поставил мимо дома, OSM мимо.
Пример 2:
Россия Тульская обл, Ефремовский р-н, г Ефремов, ул Союзная, д.26
Яндекс и Google попали ровно в дом, OSM и DaData попали в улицу, при том что OSM точнее чем DaData нашел ее начало.
Пример 3: Россия Свердловская обл, г Екатеринбург, ул Малышева, дом 8
Шаг 2: Проектирование архитектуры
После этапа анализа на релевантность выдачи, мы предложили следующую архитектуру приложения:
- Реализовать сервис на основании фреймворка Symfony в специальной конфигурации, позволяющей нам формировать шаблоны в административной панели системы
- Так как будут использоваться несколько провайдеров API, необходима отдельная конфигурация провайдеров для конкретной страны. Например, для конфигурации RU-Россия по провайдерам можно настраивать приоритетность провайдера и доступность для конкретной страны
Форма виджета для ввода адреса будет выглядеть таким образом:
Мы предусмотрели деление адреса на составляющие в форме, так как для некоторых систем по типу OSM важно разбиение адреса на составляющие.