ГАР-ФИАС: как получить актуальный адрес с пространственным положением

в 10:33, , рубрики: data engineering, gis, spatial data, адресные данные, ГАР, геоданные, ФИАС

Регулярно возникает ситуация, когда необходимо найти местоположение достоверного и актуального адреса или группы адресов, чтобы использовать их в GIS‑процессах. Такие адреса можно получить только из ГАР/ФИАС, но там только текстовые записи, при этом полный адрес разнесен в разные XML‑таблицы. Пространственное положение можно определить в НСПД, но часть данных при наличии пространственного объекта может иметь неактуальный, неполный текст адреса, или вообще не иметь его. Эти две сущности имеют общую связку — кадастровый номер.

Но основная сложность заключается в том, что ГАР — это не готовая таблица с адресной строкой, а историзированный реестр, разбитый на набор связанных сущностей и XML‑таблиц, где разные типы объектов, их параметры, типы иерархии хранятся отдельно, и при этом еще нужно учитывать актуальность самой записи, ее активность, текущую иерархию и связанные параметры. Иначе можно собрать последнюю версию записи, которая уже не действует, или собрать адрес по устаревшей иерархии.

Обработка этих баз данных руками достаточно затратная по времени, особенно для значительного объема данных, поэтому я сделал пайплайн, который автоматизирует все эти операции. А затем обернул его в облачный веб‑сервис, где пользователь без танцев с бубном рисует площадь и получает все действующие в текущей версии ГАР на момент запроса адресные записи, для которых в НСПД есть пространственное положение.

Как выглядит пайплайн:

На лефлете (геокодер Nominatim, чтобы долго не искать нужное место) пользователь рисует и нажимает «старт»

На лефлете (геокодер Nominatim, чтобы долго не искать нужное место) пользователь рисует и нажимает «старт»

Сервис с НСПД получает кадастровые номера внутри AOI, после чего выполняется поиск актуальных записей. В облаке, выполняется обработка, поиск происходит не полной выгрузке ГАР, а по заранее подготовленным базам актуальных записей для муниципальной и административной иерархий. В них для кадастрового номера можно быстро найти объект, его FIAS ID, параметры и собрать полный адрес по выбранной иерархии. Скорость получения результата — 2–3 минуты для 1,5–2 тысячи адресов.

Для объекта ГАР в текущую выборку попадают записи:
ISACTUAL = 1 
ISACTIVE = 1

Для кадастровой связи:
TYPEID = 8 
CHANGEIDEND = 0

Это важно, потому что ISACTUAL = 1 сам по себе означает последнюю версию записи, но не гарантирует, что объект продолжает действовать. Аналогично, наличие кадастрового номера в параметрах объекта еще не означает, что именно эта связь является текущей.
После сопоставления кадастровых номеров с объектами ГАР данные приводятся к единой структуре, собирается полный адрес и выполняется пространственная сборка результата.

На выходе — пространственный GeoPackage с собранным полным адресом и необходимыми атрибутами ФИАС, который сразу можно использовать.

Что именно считается адресным объектом

Для навигационной базы мне нужны прежде всего адреса, которые можно однозначно привязать к пространственному объекту. В НСПД для этой задачи используются два типа объектов:
 — ОКС (здания и строения)
 — Земельные участки.
Если на земельном участке находится одно или несколько зданий, в выборку попадют только здания. Если здания нет, но сам земельный участок имеет действующую запись ГАР, такой участок также становится адресным объектом. Наличие здания на земельном участке определяется пространственно, а не сравнением строк адреса.
Местоположение точки адреса здания определяется геометрией ОКС. Для земельного участка — центроид геометрии. При этом, если центроид находится вне геометрии фигуры — точка затягивается внутрь.

Результат можно проверить прямо в браузере

После завершения обработки результат перетащить в окно карты и быстро оценить результат прямо в браузере:

ГАР-ФИАС: как получить актуальный адрес с пространственным положением - 2

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

Зачем в результате сохранять земельные участки

Отдельная причина сохранять геометрию ЗУ — уточнение положения адресной точки. Например, для СНТ и частной застройки ситуация, когда в ГАР есть адрес участка, но нет отдельного адресного ОКС, встречается постоянно. При этом граница участка, сразу ограничивает область поиска здания, к которому относится адресная точка. То есть граница земельного участка используется как вспомогательный элемент для дальнейшей обработки адресной точки

ГАР-ФИАС: как получить актуальный адрес с пространственным положением - 3

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

Есть и ложноположительные для навигационных баз данных объекты

Здесь обнаружилась еще одна задача, которую текущая версия пока не решает полностью. В ГАР существуют вполне действующие адресные записи, связанные с земельными участками, которые фактически находятся под дорогами или другими территориями, не представляющими интереса как адрес назначения. Технически, пайплайн работает правильно: существует пространственный объект, с кадастровым номером, по нему находится действующая запись ГАР, объект попадает в результат. Особенно эта проблема актуальная для Москвы, где уже поставлены на кадастровый учет и зарегистрировано в ФИАС большое количество земельных участков под дорогами и развязками. В следующих версиях я планирую добавить классификацию таких участков и исключать их из выборки.

Что отдается пользователю

Внутри рабочей базы сохраняются идентификаторы объектов, версия записи, связи и служебные параметры, необходимые для повторной проверки и обновления данных. В пользовательской выдаче из технических идентификаторов я оставляю только FIAS ID. Его достаточно, чтобы при необходимости проверить конкретную запись и проследить ее дальнейшие изменения на сайте ФИАС. Почему нужен FIAS ID: во время тестирования Я уже встречал ситуацию, когда адрес был создан, а через короткое изменился номер здания. В другом случае, в СНТ проездам позднее были присвоены названия улиц. Эти изменения выявились при обработке дельт ГАР, хотя на дату работы сервиса по этим адресам — данные были корректны.

Производительность

Сейчас сервис работает в тестовом режиме с одним worker и ограничением размера обрабатываемой территории (1 на 1 км). Для типичного участка порядка 1×1 км, где может находиться примерно 1,5–2 тыс. адресных объектов (плотно застроенное СНТ), полный цикл обработки занимает около 2–3 минут.

Что дальше

Сейчас полная версия ГАР используется для периодического формирования баз актуальных записей для муниципальной и административной иерархии.

Следующий шаг — автоматизация обработки дельт ГАР, чтобы после очередных обновлений не пересобирать актуальное состояние из полного архива, а инкрементально обновлять существующую модель. Тогда не будет задержки обновления сервиса и само обновление будет занимать минуты: максимальная дельта за 2026 год это чуть более 300 тыс. записей.
Вторая задача: подключить модель компьютерного зрения для автоматического обнаружения здания внутри земельного участка и уточнения положения адресной точки.
Третья задача: фильтрация земельных участков под дорогами и другие формально корректные, но бесполезные адресные объекты
Четвертая: получать данные не по AOI, а по списку кадастровых номеров, достаточно удобная опция.

В реальных задачах, ритейле, логистике и навигции для адреса важны не только пространственное положение, но и актуальность и возможность проследить происхождение данных. Связка ГАР и НСПД позволяет получить эти три составляющие из официальных источников и устойчивую связь между ними.

Автор: EvgenyBelavsky

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js