Типы результатов геокодирования

Результаты геокодирования в большинстве сервисов, используемых вместе с MapLibre GL JS, формируются в виде объектов, совместимых с GeoJSON-подобной структурой. Базовой единицей выступает Feature, содержащий геометрию, метаданные и контекстные атрибуты. Независимо от провайдера (Nominatim, Pelias, Mapbox Geocoding API и другие), итоговая структура стремится к унификации для последующей визуализации на карте.


Базовая модель результата: GeoJSON Feature

Типичный результат геокодирования представляет собой объект следующего уровня:

  • type: "Feature"
  • geometry: геометрия объекта (Point, LineString, Polygon)
  • properties: метаданные объекта
  • bbox: ограничивающий прямоугольник (опционально)

Геометрия почти всегда возвращается в виде точки (Point), однако для некоторых типов объектов возможно расширение до полигонов или линий.


Основные типы результатов геокодирования

Адресные результаты (Address)

Наиболее распространённый тип данных. Представляет конкретный почтовый адрес, включающий улицу, номер дома и дополнительные элементы.

Характерные признаки:

  • точечная геометрия
  • высокая точность координат
  • наличие полного адресного контекста

Используется для:

  • поиска зданий
  • навигации к конкретной точке

Объекты интереса (Point of Interest, POI)

К категории POI относятся бизнес-объекты, инфраструктура и значимые точки на карте.

Примеры:

  • рестораны
  • станции метро
  • достопримечательности
  • учреждения

Особенности:

  • могут содержать расширенные свойства (category, maki, brand)
  • часто имеют повышенный приоритет отображения
  • могут иметь пользовательские иконки при визуализации

Административные единицы (Administrative areas)

Включают иерархические территориальные сущности:

  • страна
  • область / регион
  • район
  • город
  • муниципалитет

Характерные особенности:

  • часто имеют bbox, охватывающий всю территорию
  • используются для масштабирования карты (fitBounds)
  • важны для контекстного поиска

Улицы и линейные объекты (Street / Line)

Результаты, представляющие линейные географические сущности:

  • улицы
  • проспекты
  • магистрали
  • реки (в некоторых провайдерах)

Особенности:

  • геометрия может быть LineString
  • используются для промежуточной навигации
  • редко отображаются как маркеры

Почтовые индексы (Postcode / ZIP)

Результаты, связанные с почтовыми зонами.

Характеристики:

  • агрегированные области
  • часто представлены точкой центра или полигоном
  • низкая точность по сравнению с адресами

Регионы и страны (Region / Country)

Крупные административные единицы верхнего уровня.

Особенности:

  • обязательное наличие контекстной иерархии
  • широкие bounding box
  • используются для глобального масштабирования карты

Геометрические формы результатов

Точечные результаты (Point)

Наиболее распространённый тип геометрии.

"geometry": {
  "type": "Point",
  "coordinates": [lon, lat]
}

Используется для:

  • адресов
  • POI
  • центроидов административных зон

Ограничивающий прямоугольник (bbox)

"bbox": [minLon, minLat, maxLon, maxLat]

Назначение:

  • автоматическое позиционирование карты
  • определение границ объекта
  • масштабирование через fitBounds

Полигональные и линейные геометрии

Встречаются реже, но важны для:

  • районов
  • природных объектов
  • крупных территориальных единиц

Атрибуты результата геокодирования

Идентификаторы

  • id — уникальный идентификатор объекта
  • osm_id (в Nominatim) — идентификатор OpenStreetMap
  • external_id — идентификатор внешнего провайдера

Тип объекта

  • place_type — основной тип результата
  • массив типов (например: ["place", "locality"])

Позволяет различать:

  • адрес
  • POI
  • административную область

Релевантность (relevance)

Числовой показатель соответствия запросу.

Особенности:

  • нормализованное значение (обычно 0–1)
  • используется для сортировки результатов
  • зависит от полноты совпадения строки поиска

Геометрические атрибуты

  • center — центральная точка объекта
  • geometry — полная геометрия
  • bbox — границы объекта

Контекст (context)

Один из ключевых элементов иерархии.

Содержит вложенную структуру:

  • страна
  • регион
  • город
  • район

Позволяет восстановить полный адресный путь без дополнительных запросов.


Иерархическая структура результатов

Геокодирование редко возвращает изолированный объект. Чаще используется вложенная модель:

  • POI внутри города
  • улица внутри района
  • адрес внутри административной зоны

Контекстная вложенность позволяет:

  • строить хлебные крошки адреса
  • формировать человекочитаемые строки
  • выполнять фильтрацию по уровню детализации

Поведение различных провайдеров

Nominatim (OpenStreetMap)

  • строгая привязка к OSM-объектам
  • богатый address объект
  • менее стандартизированная релевантность

Pelias

  • унифицированная GeoJSON-модель
  • расширенный контекст
  • поддержка мульти-источников

Mapbox Geocoding API

  • высокая нормализация результатов
  • строгая типизация place_type
  • расширенные свойства для POI

Обработка результатов в MapLibre GL JS

Результаты геокодирования интегрируются в карту через стандартные механизмы слоёв и источников.

Основные сценарии:

Отображение маркера

  • используется GeoJSON source
  • точка добавляется как symbol или circle layer

Перемещение карты

  • flyTo применяется к center
  • fitBounds применяется к bbox

Фильтрация результатов

Осуществляется на основе:

  • place_type
  • relevance
  • наличия bbox

Кластеризация (для POI)

При большом количестве результатов:

  • включается clustering в GeoJSON source
  • объединяются близкие точки
  • повышается производительность отображения

Практическая интерпретация типов

Различные типы результатов определяют поведение интерфейса:

  • адрес → точный переход и установка маркера
  • POI → интерактивный выбор объекта
  • административная область → масштабирование карты
  • улица → промежуточная навигационная опора
  • индекс → справочный контекст

Особенности интерпретации в интерфейсах карт

Семантика результатов напрямую влияет на UX:

  • точечные объекты воспринимаются как конечные цели
  • административные — как области исследования
  • линейные — как навигационные элементы

Визуализация в MapLibre GL JS строится с учётом этих различий через стили слоёв, приоритеты и поведение камеры.