История изменений ОКТМО

Материал из Data-in

История изменений

Дата Версия Автор Описание изменений

25.11.2021

1.0

Гостева Инесса Игоревна

Документ создан

Сёмин Павел Олегович

Общая информация о датасете

Датасет позволяет отследить изменения, происходившие с муниципалитетами в 2015-2021 гг.: состав населенных пунктов, код ОКТМО и название МО. Для отслеживания истории, воспользуйтесь инструментом ovrazhki из библиотеки Susanin на Github: https://github.com/CAG-ru/susanin/ovrazhki

Датасет был собран на основе публичной информации: наборы данных с ОКТМО и перекодировочные таблицы ОКТМО, размещенные на сайте Росстата; таблицы соответствия ОКАТО и ОКТМО, размещенные на сайте Минфина; и акты, устанавливающие изменение ОКТМО на сайте «Консультант Плюс». В результате сопоставления источников был в том числе сгенерирован GUID – глобальный ID (внешний ключ) населенного пункта, с помощью которого можно отследить изменение кода ОКТМО и/или названия во времени. Таким образом, датасет можно использовать для построения длинных рядов показателей муниципальных образований с 2015 по 2021 гг.

Единица наблюдения в датасете — муниципальное образование / населенный пункт на определенную дату. Данные для каждого наблюдения приведены по следующим атрибутам: ОКТМО, наименование, тип, хэш и уровень (для муниципальных образований), GUID и т.д.

Датасет состоит из трех плоских таблиц:

  • np_mun_mapping.csv: 233 042 наблюдения по 3 атрибутам;
  • mun_obr.csv; 25 056 наблюдений по 9 атрибутам;
  • np.csv: 189 213 наблюдений по 7 атрибутам;

Датасет доступен для работы в формате CSV (кодировка: «UTF-8», разделитель: «;»).

Общее описание набора данных

Атрибут Значение
Общие сведения
Полное наименование набора данных История изменений муниципалитетов в России: наименования, коды ОКТМО и входящие в состав населенные пункты
Сокращенное наименование набора данных История изменения ОКТМО
Краткое описание набора данных Датасет позволяет отследить изменения, происходившие с муниципалитетами в 2015-2021 гг.: состав населенных пунктов, код ОКТМО и название МО. Для отслеживания истории, воспользуйтесь библиотекой: https://github.com/CAG-ru/susanin/ovrazhki

Датасет был собран на основе публичной информации: наборы данных с ОКТМО и перекодировочные таблицы ОКТМО, размещенные на сайте Росстата; таблицы соответствия ОКАТО и ОКТМО, размещенные на сайте Минфина; и акты, устанавливающие изменение ОКТМО на сайте «Консультант Плюс». В результате сопоставления источников был в том числе сгенерирован GUID – глобальный ID (внешний ключ) населенного пункта, с помощью которого можно отследить изменение кода ОКТМО и/или названия во времени. Таким образом, датасет можно использовать для построения длинных рядов показателей муниципальных образований с 2015 по 2021 гг.

Единица наблюдения в датасете — муниципальное образование / населенный пункт на определенную дату. Данные для каждого наблюдения приведены по следующим атрибутам: ОКТМО, наименование, тип, хэш и уровень (для муниципальных образований), GUID и т.д.

Датасет состоит из трех плоских таблиц:
  • np_mun_mapping.csv: 233 042 наблюдения по 3 атрибутам;
  • mun_obr.csv; 25 056 наблюдений по 9 атрибутам;
  • np.csv: 189 213 наблюдений по 7 атрибутам
Краткое описание источника набора данных Информацию о кодах ОКТМО и изменениях границ и состава населенных пунктов муниципалитетов в России собирают три ведомства: Росстандарт, выпускающий нормативные акты, которые устанавливают изменение ОКТМО; Росстат, собирающий разные версии ОКТМО и перекодировочные таблицы и Минфин, собирающий таблицы соответствия кодов ОКАТО кодам ОКТМО.
Покрываемый временной период 28.01.2015–03.11.2021
Доступные форматы CSV (кодировка: «UTF-8», разделитель: «;»)
Размер набора данных 42,1 МБ
Тематика набора данных Статистика
Режим доступа Открытый (у Вас есть возможность работать с данными на своем личном ПК, в том числе и скачивать данные)
Периодичность публикации и обновления
Дата размещения в каталоге 25.11.2021
Периодичность обновления в каталоге Ежегодно
Дата последнего обновления набора данных в каталоге Отсутствует
Характер последнего обновления
Дата следующего обновления набора данных
Дополнительные сведения
Цитирование набора данных на русском языке История изменений муниципалитетов в России: наименования, коды ОКТМО и входящие в состав населенные пункты // Росстат; обработка: Гостева И., Сёмин П., Инфраструктура научно-исследовательских данных, АНО «ЦПУР», 2021. Доступ: Лицензия CC BY-SA. Размещено: 25.11.2021. URL: http://data.rcsi.science/data-catalog/datasets/186
For references (English) History of changes in municipalities in Russia: names, OKTMO codes and settlements // Rosstat; data-processing: Gosteva I., Syomin P., The Research Development Infrastructure (RDI), CAG, 2021. Access: License CC BY-SA. Posted: 09.23.2021. URL: http://data.rcsi.science/data-catalog/datasets/186
Ссылка на открытый репозиторий https://github.com/CAG-ru/susanin/ovrazhki
Геоданные (пространственная привязка набора данных) Нет
Лицензия, под которой публикуется набор данных СС BY-SA (Creative Commons)
https://creativecommons.org/licenses/by-sa/4.0/
Допускается использование, копирование и распространение данных в научно-исследовательских, коммерческих и любых иных целях. При преобразовании материала разрешается распространять переделанные части материала на условиях этой же лицензии — CC BY-SA
Стандарт публикации http://opendata.gosmonitor.ru/standard/3.0
Параметры запросов API Интеграция через API не предусмотрена

Структура набора данных (Codebook)

Датасет представлен в виде трёх плоских таблиц (формат данных: CSV; кодировка: «UTF-8», разделитель: «;»):

  • Таблица «Соответствие между муниципальными образованиями и населенными пунктами, входящими в их состав в определенный промежуток времени» (np_mun_mapping.csv); 233 042 наблюдения по 3 атрибутам за 28.01.2015–03.11.2021.
  • Таблица «Муниципальные образования» (mun_obr.csv); 25 056 наблюдений по 9 атрибутам за 28.01.2015–03.11.2021;
  • Таблица «Населённые пункты» (np.csv); 189 213 наблюдений по 7 атрибутам за 28.01.2015–03.11.2021;

Соответствие между муниципальными образованиями и населенными пунктами, входящими в их состав в определенный промежуток времени (np_mun_mapping.csv)

Атрибут Описание Количество
пропусков (NaN)
(шт/%)
Единица измерения ОКЕИ Формат
guid Cгенерированный в ходе обработки данных глобальный ID населённого пункта в рамках этого датасета. В отличие от ID, не меняется при изменении кода ОКТМО или наименования населённого пункта. GUID позволяет отследить изменение кода ОКТМО или наименования в привязке ко времени. 0 (0%) integer
hash1 Хэш муниципального образования второго уровня, внутри которого находится населённый пункт с указанным guid. Соответствует полю hash в таблице mun_obr.csv. 0 (0%) string
hash2 Хэш муниципального образования второго уровня, внутри которого находится населённый пункт с указанным guid. Соответствует полю hash в таблице mun_obr.csv.

Если не заполнено, то населённый пункт находится напрямую в муниципальном образовании первого уровня, которое не включает в свой состав другие муниципальные образования (например, в муниципальном округе).
0 (0%) string

Муниципальные образования (mun_obr.csv)

Атрибут Описание Количество
пропусков (NaN)
(шт/%)
Единица измерения ОКЕИ Формат
id ID наблюдения в рамках набора данных 0 (0%) integer
hash Хэш муниципального образования. Хэш рассчитан как md5sum от строки, включающей в себя guid’ы населённых пунктов, входящих в данное муниципальное образование. Одинаковый хэш означает, что список населённых пунктов в муниципальном образовании не менялся.

Если в муниципальном образовании нет населённых пунктов, то хэш считается от строки, включающей в себя код ОКТМО и наименование муниципального образования. В таком случае одинаковый хэш означает, что ни название, ни код ОКТМО муниципального образования не менялись.
0 (0%) string
oktmo Код ОКТМО муниципального образования. 0 (0%) string
municipality Наименование муниципального образования. 0 (0%) string
lvl Уровень муниципального образования. К первому уровню относятся: муниципальные округа; городские округа; муниципальные районы; внутригородские территории городов федерального значения. Ко второму уровню относятся: городские поселения; сельские поселения; межселенные территории; внутригородские районы. 0 (0%) integer
odate_start Дата начала действия записи. Период от даты начала до даты окончания — это «время существования» муниципального образования в указанном составе. Даты начала и окончания соответствуют датам опубликования разных версий набора открытых данных Росстата. 0 (0%) date
odate_end Дата окончания действия записи. 0 (0%) date
region Субъект РФ, в котором находится муниципальное образование. 0 (0%) string
mun_type Тип муниципального образования:
  • муниципальный округ,
  • городской округ,
  • муниципальный район,
  • внутригородская территория города федерального значения,
  • городское поселение,
  • сельское поселение,
  • межселенная территория,
  • внутригородской район.
0 (0%) string

Населённые пункты (np.csv)

Атрибут Описание Количество
пропусков (NaN)
(шт/%)
Единица измерения ОКЕИ Формат
id ID наблюдения в рамках набора данных 0 (0%) integer
guid Cгенерированный в ходе обработки данных глобальный ID населённого пункта в рамках этого датасета. В отличие от ID, не меняется при изменении кода ОКТМО или наименования населённого пункта. GUID позволяет отследить изменение кода ОКТМО или наименования в привязке ко времени. 0 (0%) integer
oktmo Код ОКТМО населённого пункта. 0 (0%) string
settlement Наименование населённого пункта. 0 (0%) string
np_type Тип населённого пункта. Возможные значения: город, посёлок городского типа, сельский населённый пункт. 0 (0%) string
odate_start Дата начала действия записи. Период от даты начала до даты окончания — это «время существования» населённого пункта с указанным кодом ОКТМО и указанным наименованием. Даты начала и окончания соответствуют датам опубликования разных версий набора открытых данных Росстата. 0 (0%) date
odate_end Дата окончания действия записи. 0 (0%) date

Известные ограничения данных

Полнота данных

  • Несмотря на то, что текущая версия классификатора ОКТМО ведётся с 2013 г., в набор данных включена история ОКТМО с 2015 г., потому что первая версия открытых данных Росстата, которая послужила источником информации, датируется январём 2015 г.
  • В наборе данных не отражены планируемые изменения ОКТМО, которые не вступили в силу на 25.11.2021.
  • В таблице np_mun_mapping.csv примерно для 29 тысяч guid не указан хэш «родительского» муниципального образования второго уровня (поле hash2), т.к. населённые пункты находятся непосредственно внутри муниципальных образований первого уровня и эти муниципальные образования не содержат внутри себя муниципальных образований второго уровня. Примеры таких муниципальных образований первого уровня — это муниципальные округа, внутригородские территории городов федерального значения и большинство городских округов (кроме городских округов с внутригородским делением).

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

Сгенерированный в ходе обработки данных внешний ключ guid населённых пунктов (см. подробнее п. «внесенные в набор данных изменения») проверялся на реалистичность значений:

  • максимальное число строк с одним guid в таблице np.csv не должно превышать 41 (по числу версий набора открытых данных Росстата на ноябрь 2021 года). Проверка пройдена, исключения (42 штуки) обработаны вручную и исправлены;
  • наименование населённых пунктов с одним guid должно быть одинаковым, за исключением случаев переименования без изменения кода ОКТМО (например, 25 636 434 106 д Еловая → 25 636 434 106 д Еловое). Проверка пройдена;
  • наименование населённых пунктов с одним кодом ОКТМО должно быть одинаковым, за исключением случаев переименования без изменения кода ОКТМО. Проверка пройдена;
  • одному guid могут соответствовать несколько кодов ОКТМО, но одному коду ОКТМО должен соответствовать один guid. Иначе говоря, населённый пункт может поменять код ОКТМО, но при этом, по общему правилу, не должно быть ситуаций, когда код ОКТМО передан от одного населённого пункта другому. Проверка пройдена, исключения (35 штук) обработаны вручную. В этих исключительных случаях код ОКТМО действительно был передан от одного населённого пункта другому. Такое случается, когда меняется административный центр муниципального образования. По правилам ведения ОКТМО, у административного центра должен быть код, заканчивающийся на 1. Если этот код раньше принадлежал другому населённому пункту, то он передаётся новому административному центру. Пример: до середины 2016 года в Липецкой области было с Шишкино (код 42 656 484 101 — административный центр) и п Рощинский (код 42 656 484 106). В середине 2016 года п Рощинский сделали административным центром и передали ему код 42 656 484 101, а с Шишкино получило новый код — 42 656 484 103. В результате один код ОКТМО соответствует разным населённым пунктам и разным guid (93703 и 93704) в таблице np.csv.

Проведён поиск и устранение ошибок в открытых данных и перекодировочных таблицах Росстата. Скорректированы записи со следующими guid:

  • 59197 и 59413 (с учётом оригинального текста изменения 121/2015 ОКТМО);
  • 144112, 144302, 144341, 144947, 147190 (в перекодировочной таблице 352/2019 были ошибки);
  • 179628 и 203550 (из-за переименований, упразднений и передачи кодов несколько населённых пунктов в Дагестане перепутались);
  • 203549 (в Пермском крае, судя по имеющейся информации, две д Сюзи)

Проведена проверка на переполнение кода. Пример ситуации, когда возможно переполнение: допустим, что есть муниципальный район с кодом 58 601 000. Тогда сельские поселения в данном муниципальном районе получат коды вида 58 601 4NN, где NN — число от 01 до 99. Следовательно, если в муниципальном районе больше 99 сельских поселений, то свободные номера закончатся. По правилам ведения ОКТМО, в таком случае необходимо делать дополнительный код для муниципального района (например, 58 602 000), включать в него оставшиеся сельские поселения и в примечании указывать отсылку к основному коду. При переполнении становится сложнее отслеживать состав муниципальных образований, так как они оказываются разделены между несколькими кодами. Однако проверка показала, что переполнений не наблюдается. Исключение — это переполнение внутригородских территорий городов федерального значения (их больше 99, поэтому отведённые коды вида 40 3NN закончились), однако этот случай специально оговорён в правилах ведения ОКТМО и не требует дополнительных проверок. Проведены различные проверки соответствия правилам кодирования муниципальных образований и населённых пунктов. Пример проверки: внутри муниципального округа не может быть муниципальных образований второго уровня.

Внесенные в набор данных изменения по сравнению с источниками

Сведения по населенным пунктам обогащены внешним ключом (guid), который позволяет отследить изменение кода ОКТМО или наименования в привязке ко времени. Например, село Галенки Октябрьского района Приморского края Российской Федерации за период с 2013 по 2021 гг. сменило 3 кода ОКТМО: 05 626 402 101 на 05 626 410 103, который в свою очередь превратился в 05 526 000 111. При этом все три записи с разным кодом ОКТМО обозначают один и тот же населённый пункт и связаны внешним ключом guid = 9001.

Алгоритм расстановки внешнего ключа (guid) заключается в последовательном выполнении следующих действий:

  1. Взять список населённых пунктов из первой (самой ранней, выпущенной 28 января 2015 г.) версии открытых данных Росстата и пронумеровать их. Каждый такой номер — это guid, присвоенный путём первоначальной расстановки.
  2. Просмотреть остальные версии открытых данных Росстата. Если в них встречаются населённые пункты с теми же кодами ОКТМО, что и в первой версии, то присвоить тот же guid, который был присвоен в ходе первоначальной расстановки.
  3. Просмотреть перекодировочные таблицы. Для каждой пары «старый код — новый код», содержащейся в перекодировочной таблице, проверить, есть ли guid у старого кода. Если есть, то присвоить записям с новым кодом тот же guid, что у старого кода. Повторять до тех пор, пока не останется старых кодов, для которых неизвестен guid. Например, если населённый пункт до 2020 года имел код ОКТМО 01 601 401 001 и guid 100, после 2020 года такие код и guid отсутствуют, а в перекодировочной таблице есть изменение 01 601 401 001 → 01 501 000 001, и после 2020 года в наборе данных встречается код 01 501 000 001, то ему присваивается guid 100.
  4. Просмотреть список населённых пунктов региона. Если в регионе есть только один населённый пункт с каким-либо наименованием, при этом у части записей с таким наименованием есть guid, а у части — нет, то распространить guid на те записи с таким же наименованием, где guid отсутствует. Например, если в N-ской области есть только одна д Простоквашино, у которой до 2020 года был guid, а после 2020 его нет, то все записи после 2020 года получают тот же guid, что был указан для записей до 2020 года.
  5. Просмотреть таблицы соответствия между ОКАТО и ОКТМО (описание таблиц — в разделе «Источники данных», п. 5.3). Если населённые пункты имеют один код ОКАТО, но разные коды ОКТМО, и для одного из кодов ОКТМО известен guid, а для другого — нет, то все коды ОКТМО, имеющие один код ОКАТО, получают одинаковый guid. Например, если из таблиц соответствия следует, что город с ОКАТО 01 101 102 001 до 2020 года имел ОКТМО 01 701 000 001, а после — 01 702 000 001, то записи после 2020 года получают тот же guid, что до 2020 года.
  6. Вручную проанализировать записи без guid и либо присвоить новый guid, либо исправить ошибки в предыдущей расстановке. Ошибки при расстановке по правилам, указанным в предыдущих пунктах появляются, т.к. есть допущения, на которых основан описанный выше алгоритм, но которые не всегда выполняются на практике.


Сведения о муниципальных образованиях обогащены хэшем, который идентифицирует муниципальное образование как уникальную территорию, не изменявшуюся в течение периода, указанного в полях odate_start и odate_end. Для вычисления хэша использовались два алгоритма: основной и резервный.

Основной алгоритм: муниципальное образование рассматривалось как множество населённых пунктов, которые входят в его состав. Каждый элемент множества — это guid населённого пункта. Поскольку guid неизменен, то переименование населённого пункта или изменение его кода, не меняющее принадлежность к тому или иному муниципальному образованию, не влияет на хэш. Сам хэш — это результат применения функции md5sum к строке, состоящей из guid населённых пунктов, разделённых запятой и пробелом. Например, если в муниципальное образование А входят населённые пункты с guid 1, 2 и 1300, то хэш муниципального образования — это md5sum(“1, 2, 1300”). Если населённый пункт с guid 2 уходит из состава муниципального образования А, то хэш вычисляется от другой строки — “1, 1300” — и становится другим, в результате чего изменение состава муниципального образования можно отследить по изменению хэша. Кроме того, если муниципальное образование А переименовывают в Б, но сохраняют прежний набор населённых пунктов, то хэш тоже не меняется, так что изменение наименования муниципального образования, при котором его состав не изменился, можно отследить по одинаковому хэшу.

Резервный алгоритм: бывает, что в муниципальном образовании нет населённых пунктов. Пример — большинство внутригородских территорий городов федерального значения, которые не включают в свой состав населённые пункты, а наоборот, делят один город на несколько частей. В этом случае вычислить хэш по основному алгоритму невозможно, так как строка из guid получится пустой во всех случаях и перестанет быть уникальной. Для таких муниципальных образований хэш — это md5sum от строки вида «кодНаименование» (без пробела, например: «45319000муниципальный округ Крылатское»). В таком случае при изменении кода ОКТМО или наименования хэш меняется, что позволяет отслеживать переименование при сохранении кода или изменение кода при сохранении наименования. Выбранный алгоритм расстановки хэша не позволяет отследить ситуации, когда одновременно менялись все характерные признаки муниципального образования: код ОКТМО, наименование, состав. Например, если городское поселение «Город А» с кодом 99 601 101, включающее в свой состав город с guid 1000, переименовали в «Город Б», поменяли код на 99 601 102 и добавили в его состав посёлок городского типа с guid 1001, то в результате у городского поселения «Город А» и городского поселения «Город Б» будут разные наименования, коды ОКТМО и хэши, и отследить их преемственность напрямую будет невозможно. Вариант в такой ситуации — смотреть состав муниципальных образований и сравнивать список населённых пунктов.

Сведения по муниципальным образованиям обогащены нормализованными наименованиями регионов, уровнем (1 или 2) и типом муниципального образования.

Расстановка типов проходила по следующему алгоритму:

  • если муниципальное образование первого уровня (lvl = 1), то тип определяется по третьей цифре кода ОКТМО (например, 81 657 000 Хоринский муниципальный район):
    • 3 — внутригородская территория города федерального значения,
    • 5 — муниципальный округ,
    • 6 — муниципальный район,
    • 7 — городской округ;
  • если определить по третьей цифре не получилось и регион — город федерального значения (первые две цифры ОКТМО — 40, 45, 67), то тип — внутригородская территория города федерального значения.
  • если определить по третьей цифре не получилось и регион — не город федерального значения, то тип определяется по четвертой и пятой цифрам (например, 71 871 000 город Ханты-Мансийск):
    • 10–30 — муниципальный район,
    • 30–49 — муниципальный округ,
    • 50–99 — городской округ;
  • исключение из правил: oktmo = 30832000 — муниципальный район;
  • если муниципальное образование второго уровня (lvl = 2), то тип определяется по шестой цифре кода ОКТМО (например, 82 605 440 село Лологонитль):
    • 1 — городское поселение,
    • 3 — внутригородской район,
    • 4 — сельское поселение,
    • 7 — межселенная территория.

Расстановка уровня муниципального образования проходила по следующему алгоритму: если шестая цифра кода ОКТМО — ноль, то уровень 1, иначе 2. Например, 01 657 000 (Целинный муниципальный район) — уровень 1, а 01 611 489 (Чистоозёрский сельсовет) — уровень 2.

Сведения по населенным пунктам также обогащены типом территориальной единицы. Расстановка типов проходила по трем последним цифрам кода ОКТМО (например, 99 701 000 001 г Биробиджан):

  • 001–049 — город;
  • 051–099 — поселок городского типа (рабочие поселки, курортные поселки, дачные поселки, поселки, городские поселки);
  • 101–999 — сельский населенный пункт (поселки, села, станицы, деревни, хутора, кишлаки, аулы и др.).

Источники данных

ОКТМО в разделе «открытые данные» сайта Росстата

Перекодировочные таблицы аннулированных кодов ОКТМО

Таблицы соответствия кодов ОКАТО кодам ОКТМО муниципальных образований и входящих в их состав населенных пунктов и межселенных территорий Минфина

Нормативно-правовые акты субъектов РФ, устанавливающие изменения муниципально-территориального устройства («Консультант Плюс»)

Ответственные за набор данных

ФИО ответственного лица Электронная почта ответственного лица

1.

Гостева Инесса Игоревна

i.gosteva@cpur.ru

2.

Сёмин Павел Олегович

p.semin@cpur.ru