Номинируйте кейсы на Workspace Digital Awards 2026. Прием заявок до 15 декабря по льготной цене, успейте принять участие!
LACHESTRY
Как мы решали задачу по оптимальному геокодингу адреса для сервиса доставки
LACHESTRY
#Проектирование сайта#Программирование сайта

Как мы решали задачу по оптимальному геокодингу адреса для сервиса доставки

215 
LACHESTRY Россия, Таганрог
Поделиться: 0 0 0
Как мы решали задачу по оптимальному геокодингу адреса для сервиса доставки
Клиент

Крупный мебельный ритейлер

Сфера

Электронная коммерция

Регион

Россия

Сдано

Декабрь 2024

Задача

В современном мире, где цифровые технологии и геопространственные данные играют ключевую роль в различных сферах жизни, определение точных координат объекта по его адресу становится важной задачей. Это необходимо для навигации, логистики, городского планирования, анализа данных и многих других областей. Однако процесс преобразования адреса в географические координаты (геокодирование) может быть сопряжен с рядом сложностей, таких как неоднозначность адресов, ошибки в данных или отсутствие точной информации. Наш клиент обратился к нам с запросом на решение проблемы правильной идентификации адреса и координат. 

Решение

На схеме ниже представлены цели и предполагаемый путь решения:

Для решения задач геокодирования мы рассматривали следующие сервисы:

Yandex https://geocode-maps.yandex.ru/

DaData https://dadata.ru/api/geocode/

Google Maps https://developers.google.com/maps/documentation/geocoding/overview?hl=ru

OSM https://nominatim.openstreetmap.org/ui/search.html

Стоит отметить, что три первых сервиса предоставляют платный доступ к данным.

1Проверка определения геопозиции по адресам

Рассмотрим на примерах, как сервисы идентифицировали геопозицию по заданному адресу

Пример 1: Россия Владимирская обл, г Ковров, ул Машиностроителей, дом 8

Результат: Яндекс и DaData определили адрес точно вплоть до дома, Google поставил мимо дома, OSM мимо

Пример 2: 

Россия Тульская обл, Ефремовский р-н, г Ефремов, ул Союзная, д.26

Яндекс и Google попали ровно в дом, OSM и DaData попали в улицу, при том что OSM точнее чем DaData нашел ее начало

Пример 3: Россия Свердловская обл, г Екатеринбург, ул Малышева, дом 8

OSM, Яндекс и Google попадают в точку, DaData по каким-то причинам указал на начало улицы с другой стороны и не определил адрес.

2Проектирование архитектуры

После этапа анализа на релевантность выдачи, мы предложили следующую архитектуру приложения:

- Реализовать сервис на основании фреймворка Symfony в специальной конфигурации, позволяющей нам формировать шаблоны в административной панели системы

- Так как будут использоваться несколько провайдеров API, необходима отдельная конфигурация провайдеров для конкретной страны. Например, для конфигурации RU-Россия по провайдерам можно настраивать приоритетность провайдера и доступность для конкретной страны

- Форма виджета для ввода адреса будет выглядеть таким образом

Мы предусмотрели деление адреса на составляющие в форме, так как для некоторых систем по типу OSM важно разбиение адреса на составляющие.

Результат

В рамках разработки сервиса была реализована возможность выбора очередности геокодинговых провайдеров. Основная цель данного решения — оптимизация затрат, поскольку система позволяет в первую очередь направлять запросы к бесплатным или более экономичным сервисам, используя платные (например, Яндекс.Геокодер или Google Maps) только при необходимости.

Особое внимание уделено балансу между стоимостью и точностью результатов. Так, после бесплатного OpenStreetMap рекомендуется использовать Яндекс.Геокодер, который, несмотря на свою стоимость, обеспечивает высокую точность данных. Кроме того, ключевым преимуществом Яндекса является его обширная зона покрытия, включая отдалённые населённые пункты, где другие провайдеры, такие как Google, могут не предоставлять достаточных данных.

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


Стек технологий

  • PHP PHP Язык программирования
  • Symfony Symfony Фреймворк/библиотека

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

Хотите заказать похожий проект?

LACHESTRY с удовольствием обсудит вашу задачу

Оставить заявку