ГлавнаяГлавная / Новости, 201707Новости, 201707 / Как перейти от КЛАДР к ФИАС и ничего себе не сломатьКак перейти от КЛАДР к ФИАС и ничего себе не сломать

Как перейти от КЛАДР к ФИАС и ничего себе не сломать

Как вы думаете, какой государственный орган наиболее заинтересован в том, чтобы вы получали от него письма? Правильно! Налоговая. Поэтому ФНС России много лет разрабатывает и поддерживает ведомственные общероссийские классификаторы адресов. И так как более полных справочников нет, их стали использовать повсеместно.

Сначала был КЛАДР, и было в нем 6 уровней:


КиТ Будь в СЕТИ!

Будь в СЕТИ! Каталог социальных сетей :: Будь в СЕТИ! - Добавить в избранное KiT - Keep-inTouch :: RSS-лента

Сети :: [Профессиональные] | [Зарубежные] | [Тематические] | [Молодежные] | [Детские] | [Медиа (игры, развлечения)] | [Знакомства] | [Купоны] | [Прочее]

Категории (метки) :: Авто | Музыка | Книги | Хобби | Профессии | Сообщества | Семья | Бизнес | Регионы | Спорт | * Статусы

Регион -> Район -> Город -> Населенный пункт -> Улица -> Дом со строениями и корпусами

С 2012 года в эксплуатацию ввели новый классификатор — ФИАС. Про основные отличия мы писали три года назад в статье . В ФНС к разработке нового классификатора подошли основательнее и постарались учесть все грабли минусы КЛАДР. Из интересного добавили дату начала и окончания записи, ввели фиксированный ID для каждого дома (предполагается, что он не будет меняться).

До сих пор продолжают обновляться оба классификатора, но поддерживать совместимость становится сложнее. В прошлом году в ФИАС начали добавлять новые уровни. Например, планировочные структуры — это всякие дачные товарищества и микрорайоны, в классификаторе их уже больше 81 000. В конечном итоге в ФНС приняли логичное решение прекратить поддержку КЛАДР и удалить его в конце 2017 года.



Как адреса хранятся в ФИАС и КЛАДР
Мы видели много способов хранения адресов в структуре КЛАДР. В основном они сводятся к двум вариантам:

Код КЛАДР до улицы + домовая часть вида «дом 1 строение 3 квартира 33», так как части домов в классификаторе хранятся как диапазоны Адрес в виде текста — одним полем или разбитый по структуре КЛАДР.
Так как в ФИАС нет части домов, мы рекомендуем хранить адрес как:

Код ФИАС до улицы + дом + квартира для идентификации адреса ().
Адрес одной строкой в формате ФИАС. При этом лучше сохранять исходный адрес. ФИАС — это все-таки справочник налоговой, и там есть не всё.

То есть задача миграции сводится к тому, чтобы перевести код или текстовый адрес в формате КЛАДР в код ФИАС.

Классификационные коды выглядят так:

КЛАДР: СС+РРР+ГГГ+ППП+УУУУ+ДДДД; ФИАС: СС+РРР+ГГГ+ППП+СССС+УУУУ+ДДДД (или ЗЗЗЗ)+ОООО.
Смотрится страшно, рассмотрим пример: Ленинградская обл, Всеволожский р-н, деревня Кудрово, мкр Новый Оккервиль. Адрес реально существует, вот . Классификационный код КЛАДР и ФИАС на первый взгляд для него выглядит одинаково: 470050000550023. Разложим его на составляющие.
№ Уровень Пример код ФИАС код КЛАДР 1 Регион Ленинградская область СС: 47 СС: 47 2 Автономный округ 3 Район Всеволожский р-н РРР: 005 РРР: 005 4 Город ГГГ: 000 ГГГ: 000 5 Внутригородская территория 6 Населенный пункт деревня Кудрово ППП: 055 ППП: 055 65 Планировочная структура мкр Новый Оккервиль СССС: 0023 7 Улица УУУУ УУУУ: 0023 75 Земельный участок ЗЗЗЗ 8 Здание, сооружение, объект незавершенного строительства ДДДД ДДДД 9 Помещение в пределах здания, сооружения ОООО 90 Дополнительная территория 91 Подчинённые дополнительных территорий Раскладываем адрес по уровням ФИАС и КЛАДР

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

Классификационный код отражает текущую структуру адреса, а она может измениться. Например, у Оккервиля изменится район и весь код станет недействительным, мы его уже не найдем.

Чтобы избавиться от этого, в ФИАС добавили еще идентификационный код ФИАС. Это глобальный идентификатор для каждого объекта: города, улицы, района и т. д. Выглядит он как набор букв и цифр, который формируется по стандарту GUID (Globally Unique Identifier). Типичный GUID в ФИАС выглядит так: f77948dc-7bc8-42cb-979e-2c958d162d63.

Код КЛАДР -> идентификационный код ФИАС
Если адрес у вас хранится как код КЛАДР улицы + домовая часть («дом 1 строение 3 квартира 44»), то для него все относительно просто.


Таблица ADDROBJ хранит все адресные объекты с их идентификаторами

Для работы понадобится таблица ADDROBJ из выгрузки ФИАС в формате xml или dbf. В ней хранятся все объекты (города, улицы и т. д.) подряд с уникальными идентификаторами GUID.
Будем использовать следующие колонки:

код КЛАДР (PlainCode); наименование и тип текстом (FormalName и ShortName); актуальность объекта (CurrStatus); почтовый индекс (PostalCode); собственный и родительский идентификатор ФИАС (AoGuid и ParentGuid); уровень (AoLevel).
Пример: Москва, ул Александра Солженицына. Код КЛАДР: 77000000000151900.

Шаг 1. Выделяем из кода КЛАДР код до улицы, то есть берем первые 15 цифр: 77000000000151900.

Если КЛАДР меньше 15 цифр, берем 11 и дополняем нулями — это код до населённого пункта: 770000000000000; Меньше 11 цифр — берем 8: 77000000000000000; Меньше 8 — берем 5: 77000000000000000; Меньше 5 — берем 2 цифры кода региона: 77000000000000000.

Шаг 2. Ищем код КЛАДР в поле PlainCode. Если нашлась одна запись, то сохраняем значение поля AoGuid и пропускаем следующий пункт. Но по нашему коду 770000000001519 находится три записи, нужна дополнительная проверка.

Шаг 3. Находим актуальную запись. Значение поля CurrStatus = 0 означает, что запись актуальна. Выбираем ее и сохраняем значение поля AoGuid. Идентификационный код ФИАС найден!
Александра Солженицына, CurrStatus = 2; Коммунистическая Б., CurrStatus = 1; Александра Солженицына, CurrStatus = 0, AuGuid = f77948dc-7bc8-42cb-979e-2c958d162d63.
В качестве бонуса соберем текстовый адрес по найденному AoGuid:

берем PostalCode — это почтовый индекс: 109004 добавляем ShortName и FormalName: 109004, ул. Александра Солженицына если объект является регионом (поле AoLevel = 1), то адрес готов. Но в нашем случаем AoLevel = 7 — это улица. Поэтому ищем родительский элемент по полю ParentGuid и повторяем предыдущий пункт; для улицы Александра Солженицына родительская запись сразу имеет уровень региона — это Москва. Сохраняем ShortName и FormalName и собираем адрес: 109004, г. Москва, ул. Александра Солженицына

Но можно поступить еще проще и воспользоваться готовым сервисом. DaData.ru умеет подсказывать адреса в конкретных регионах, районах, городах и населенных пунктах. Понимает названия («Петергоф»), коды КЛАДР («7800000800000») и ФИАС («8f238984-812b-4bb1-850b-49749fb5c56d»).


Строчный адрес КЛАДР -> код ФИАС
Самый простой вариант — воспользоваться . Сервис сделает все за вас автоматически. Но можно и развлекаться самостоятельно.

Адреса одной строкой

Если адреса у вас хранятся одной строкой, вроде этой:
г Москва, улица Большая Коммунистическая, дом 3, то поздравляем, это самая интересная задача. Нужно писать свой адресный парсер, который будет разделять строку в формате КЛАДР на части, искать каждый ее компонент в ФИАС с учетом опечаток, сокращений, исторических названий и определять по ним ФИАС-код. Легче это сделать уже готовым адресным парсером. , мы рассказывали раньше.

Адреса по КЛАДР
Если адреса у вас хранятся разложенными по КЛАДР, то задача немного проще.
Тип региона Название региона Тип улицы Название улицы Тип дома Номер дома г Москва улица Коммунистическая Б. дом 3 Примерно так выглядит адрес, разложенный по КЛАДР

Код ФИАС можно собрать, используя всё ту же таблицу ADDROBJ. Но в этом случае двигаться по уровням нужно от большего к меньшему.

Шаг 1. Берем название региона и ищем его в поле FormalName таблицы ADDROBJ.

FormalName = Москва ->
AoGuid = 0c5b2444-70a0-4932-980c-b4dc0d3f02b5


Шаг 2. Идем дальше по уровням вниз и ищем по FormalName с фиксированным родителем — найденным AoGuid на предыдущем шаге. В нашем случае уровни «город» и «населенный пункт» пустые, а следующий непустой уровень — улица.

ParentGuid = 0c5b2444-70a0-4932-980c-b4dc0d3f02b5,
FormalName = Коммунистическая Б. -> AoGuid=f77948dc-7bc8-42cb-979e-2c958d162d63


Шаг 3. Если дошли до улицы, то можно найти и дом. Для этого в таблице HOUSE ищем номер дома с фиксированным AoGuid улицы. ФИАС не полон домами, поэтому не расстраивайтесь, если нужный номер не найдется.

AoGuid = f77948dc-7bc8-42cb-979e-2c958d162d63,
дом номер 3 ->
HouseGuid = bce8be1f-f2f7-4cce-836e-08daac0b931e


Подводные камни
Может ли что-то пойти не так? Конечно. Например, по названию может легко найтись несколько объектов. «Москва, Тверская» — это про площадь или про улицу? Тогда нужно сравнивать типы, но не все так просто.
LEVEL SCNAME SOCRNAME KOD_T_ST 7 тракт Тракт 727 7 туп Тупик 728 7 ул Улица 729 7 уч-к Участок 730 7 ф/х Фермерское хозяйство 789 7 ферма Ферма 769 7 х Хутор 758 7 ш Шоссе 731 Таблица SOCRBASE хранит полные и сокращенные типы объектов

Тип по КЛАДР может быть сокращенным и полным: «ул» — «Улица», «х» — «Хутор». В ФИАС в явном виде хранится только сокращенный тип (в поле ShortName). Полный тип в сокращенный можно превратить с помощью таблицы SOCRBASE, в ней для каждого уровня хранится соответствие сокращённых и полных типов.

§ § §

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

P.S. Благодарю за неоценимую помощь в создании этой статьи моих коллег по HFLabs , Елену Расторгуеву и .



«Вконтакте» недоступна для всех пользователей. Причина сбоя

Социальная сеть «Вконтакте» переживает масштабный сбой. Первые проблемы пользователи начали обнаруживать около 14:50 по московскому времени, когда оказались недоступны любые сервисы ресурса. Пользователей встречала надпись «К сожалению, сервер времен...

Telegram привлек на первом этапе ICO 850 миллионов долларов

Мессенджер Telegram привлек 850 млн долл. на ICO, пишут «Ведомости». По информации издания, инвесторы купили права на внутреннюю криптовалюту проекта (Grams), но пока не будет запущена блокчейн-платформа TON, они обладают просто ценными бумагами. Со...

В Windows 10 появилась кнопка «разгона» ПК до максимума

В последних тестовых сборках ОС Windows 10 компания Microsoft реализовала новую схему питания Ultimate Performance, применение которой разгоняет производительность компьютера до максимума. Как сообщает компания в своем блоге, этот режим ориентирован ...

«Цифровая экономика» включит в себя транспорт и здравоохранение

Совет при Автономной некоммерческой организации «Цифровая экономика» рекомендовал включить программу два новых направления - цифровой транспорт и здравоохранение. Еще три заявки («Умный город», «Цифровое сельское хозяйство» и «Цифровое строите...

Основатель Qiwi вложил $17 млн в Telegram

Основатель и генеральный директор компании Qiwi Сергей Солонин принял участие в ICO (первичное размещение токенов — новых единиц криптовалют) мессенджера Telegram. Об этом он сам рассказал, выступая на инвестиционном форуме, проходящем в Сочи. ...

Комментарии

Нравится
Счетчики
хостинг от .masterhost Яндекс.Метрика

Главная | Новости | КАТАЛОГ | Контакты