История изменений ОКТМО: различия между версиями
Editor (обсуждение | вклад) (1. Загружен контент в раздел «Ответственные за набор данных» (чист.)) |
Editor (обсуждение | вклад) (→Внесенные в набор данных изменения по сравнению с источниками: 1. Раздел заполне (чист.)) |
||
Строка 308: | Строка 308: | ||
Проведены различные проверки соответствия правилам кодирования муниципальных образований и населённых пунктов. Пример проверки: внутри муниципального округа не может быть муниципальных образований второго уровня. | Проведены различные проверки соответствия правилам кодирования муниципальных образований и населённых пунктов. Пример проверки: внутри муниципального округа не может быть муниципальных образований второго уровня. | ||
== Внесенные в набор данных изменения по сравнению с источниками == | == Внесенные в набор данных изменения по сравнению с источниками == | ||
'''Сведения по населенным пунктам обогащены внешним ключом (<span style="background-color:#e5fffb" >guid</span>),''' который позволяет отследить изменение кода ОКТМО или наименования в привязке ко времени. Например, село Галенки Октябрьского района Приморского края Российской Федерации за период с 2013 по 2021 гг. сменило 3 кода ОКТМО: 05 626 402 101 на 05 626 410 103, который в свою очередь превратился в 05 526 000 111. При этом все три записи с разным кодом ОКТМО обозначают один и тот же населённый пункт и связаны внешним ключом guid = 9001. | |||
Алгоритм расстановки внешнего ключа (<span style="background-color:#e5fffb" >guid</span>) заключается в последовательном выполнении следующих действий: | |||
# Взять список населённых пунктов из первой (самой ранней, выпущенной 28 января 2015 г.) версии открытых данных Росстата и пронумеровать их. Каждый такой номер — это <span style="background-color:#e5fffb" >guid</span>, присвоенный путём первоначальной расстановки. | |||
# Просмотреть остальные версии открытых данных Росстата. Если в них встречаются населённые пункты с теми же кодами ОКТМО, что и в первой версии, то присвоить тот же <span style="background-color:#e5fffb" >guid</span>, который был присвоен в ходе первоначальной расстановки. | |||
# Просмотреть перекодировочные таблицы. Для каждой пары «старый код — новый код», содержащейся в перекодировочной таблице, проверить, есть ли guid у старого кода. Если есть, то присвоить записям с новым кодом тот же <span style="background-color:#e5fffb" >guid</span>, что у старого кода. Повторять до тех пор, пока не останется старых кодов, для которых неизвестен <span style="background-color:#e5fffb" >guid</span>. Например, если населённый пункт до 2020 года имел код ОКТМО 01 601 401 001 и guid 100, после 2020 года такие код и <span style="background-color:#e5fffb" >guid</span> отсутствуют, а в перекодировочной таблице есть изменение 01 601 401 001 → 01 501 000 001, и после 2020 года в наборе данных встречается код 01 501 000 001, то ему присваивается <span style="background-color:#e5fffb" >guid</span> 100. | |||
# Просмотреть список населённых пунктов региона. Если в регионе есть только один населённый пункт с каким-либо наименованием, при этом у части записей с таким наименованием есть <span style="background-color:#e5fffb" >guid</span>, а у части — нет, то распространить <span style="background-color:#e5fffb" >guid</span> на те записи с таким же наименованием, где <span style="background-color:#e5fffb" >guid</span> отсутствует. Например, если в N-ской области есть только одна д Простоквашино, у которой до 2020 года был <span style="background-color:#e5fffb" >guid</span>, а после 2020 его нет, то все записи после 2020 года получают тот же <span style="background-color:#e5fffb" >guid</span>, что был указан для записей до 2020 года. | |||
# Просмотреть таблицы соответствия между ОКАТО и ОКТМО (описание таблиц — в разделе «Источники данных», п. 5.3). Если населённые пункты имеют один код ОКАТО, но разные коды ОКТМО, и для одного из кодов ОКТМО известен <span style="background-color:#e5fffb" >guid</span>, а для другого — нет, то все коды ОКТМО, имеющие один код ОКАТО, получают одинаковый <span style="background-color:#e5fffb" >guid</span>. Например, если из таблиц соответствия следует, что город с ОКАТО 01 101 102 001 до 2020 года имел ОКТМО 01 701 000 001, а после — 01 702 000 001, то записи после 2020 года получают тот же <span style="background-color:#e5fffb" >guid</span>, что до 2020 года. | |||
# Вручную проанализировать записи без guid и либо присвоить новый <span style="background-color:#e5fffb" >guid</span>, либо исправить ошибки в предыдущей расстановке. Ошибки при расстановке по правилам, указанным в предыдущих пунктах появляются, т.к. есть допущения, на которых основан описанный выше алгоритм, но которые не всегда выполняются на практике. | |||
'''Сведения о муниципальных образованиях обогащены хэшем, который идентифицирует муниципальное образование как уникальную территорию''', не изменявшуюся в течение периода, указанного в полях odate_start и odate_end. Для вычисления хэша использовались два алгоритма: основной и резервный. | |||
Основной алгоритм: муниципальное образование рассматривалось как множество населённых пунктов, которые входят в его состав. Каждый элемент множества — это <span style="background-color:#e5fffb" >guid</span> населённого пункта. Поскольку <span style="background-color:#e5fffb" >guid</span> неизменен, то переименование населённого пункта или изменение его кода, не меняющее принадлежность к тому или иному муниципальному образованию, не влияет на хэш. Сам хэш — это результат применения функции <span style="background-color:#e5fffb" >md5sum</span> к строке, состоящей из <span style="background-color:#e5fffb" >guid</span> населённых пунктов, разделённых запятой и пробелом. Например, если в муниципальное образование А входят населённые пункты с <span style="background-color:#e5fffb" >guid</span> 1, 2 и 1300, то хэш муниципального образования — это <span style="background-color:#e5fffb" >md5sum(“1, 2, 1300”)</span>. Если населённый пункт с <span style="background-color:#e5fffb" >guid</span> 2 уходит из состава муниципального образования А, то хэш вычисляется от другой строки — “1, 1300” — и становится другим, в результате чего изменение состава муниципального образования можно отследить по изменению хэша. Кроме того, если муниципальное образование А переименовывают в Б, но сохраняют прежний набор населённых пунктов, то хэш тоже не меняется, так что изменение наименования муниципального образования, при котором его состав не изменился, можно отследить по одинаковому хэшу. | |||
Резервный алгоритм: бывает, что в муниципальном образовании нет населённых пунктов. Пример — большинство внутригородских территорий городов федерального значения, которые не включают в свой состав населённые пункты, а наоборот, делят один город на несколько частей. В этом случае вычислить хэш по основному алгоритму невозможно, так как строка из <span style="background-color:#e5fffb" >guid</span> получится пустой во всех случаях и перестанет быть уникальной. Для таких муниципальных образований хэш — это <span style="background-color:#e5fffb" >md5sum</span> от строки вида «кодНаименование» (без пробела, например: «45319000муниципальный округ Крылатское»). В таком случае при изменении кода ОКТМО или наименования хэш меняется, что позволяет отслеживать переименование при сохранении кода или изменение кода при сохранении наименования. | |||
Выбранный алгоритм расстановки хэша не позволяет отследить ситуации, когда одновременно менялись все характерные признаки муниципального образования: код ОКТМО, наименование, состав. Например, если городское поселение «Город А» с кодом 99 601 101, включающее в свой состав город с <span style="background-color:#e5fffb" >guid</span> 1000, переименовали в «Город Б», поменяли код на 99 601 102 и добавили в его состав посёлок городского типа с <span style="background-color:#e5fffb" >guid 1001</span>, то в результате у городского поселения «Город А» и городского поселения «Город Б» будут разные наименования, коды ОКТМО и хэши, и отследить их преемственность напрямую будет невозможно. Вариант в такой ситуации — смотреть состав муниципальных образований и сравнивать список населённых пунктов. | |||
Сведения по муниципальным образованиям обогащены нормализованными наименованиями регионов, уровнем (1 или 2) и типом муниципального образования. | |||
Расстановка типов проходила по следующему алгоритму: | |||
* если муниципальное образование первого уровня (<span style="background-color:#e5fffb" >lvl = 1</span>), то тип определяется по третьей цифре кода ОКТМО (например, 81 <u>6</u>57 000 Хоринский муниципальный район): | |||
** 3 — внутригородская территория города федерального значения, | |||
** 5 — муниципальный округ, | |||
** 6 — муниципальный район, | |||
** 7 — городской округ; | |||
* если определить по третьей цифре не получилось и регион — город федерального значения (первые две цифры ОКТМО — 40, 45, 67), то тип — внутригородская территория города федерального значения. | |||
* если определить по третьей цифре не получилось и регион — не город федерального значения, то тип определяется по четвертой и пятой цифрам (например, 71 <u>87</u>1 000 город Ханты-Мансийск): | |||
** 10–30 — муниципальный район, | |||
** 30–49 — муниципальный округ, | |||
** 50–99 — городской округ; | |||
* исключение из правил: oktmo = 30832000 — муниципальный район; | |||
* если муниципальное образование второго уровня (<span style="background-color:#e5fffb" >lvl = 2</span>), то тип определяется по шестой цифре кода ОКТМО (например, 82 605 <u>4</u>40 село Лологонитль): | |||
** 1 — городское поселение, | |||
** 3 — внутригородской район, | |||
** 4 — сельское поселение, | |||
** 7 — межселенная территория. | |||
Расстановка уровня муниципального образования проходила по следующему алгоритму: если шестая цифра кода ОКТМО — ноль, то уровень 1, иначе 2. Например, 01 657 <u>0</u>00 (Целинный муниципальный район) — уровень 1, а 01 611 <u>4</u>89 (Чистоозёрский сельсовет) — уровень 2. | |||
'''Сведения по населенным пунктам также обогащены типом территориальной единицы'''. Расстановка типов проходила по трем последним цифрам кода ОКТМО (например, 99 701 000 <u>001</u> г Биробиджан):<br> | |||
* 001–049 — город;<br> | |||
* 051–099 — поселок городского типа (рабочие поселки, курортные поселки, дачные поселки, поселки, городские поселки);<br> | |||
* 101–999 — сельский населенный пункт (поселки, села, станицы, деревни, хутора, кишлаки, аулы и др.). | |||
== Источники данных == | == Источники данных == |
Версия 19:33, 24 ноября 2021
История изменений
Дата | Версия | Автор | Описание изменений |
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 и т.д. Датасет состоит из трех плоских таблиц:
|
Краткое описание источника набора данных | Информацию о кодах ОКТМО и изменениях границ и состава населенных пунктов муниципалитетов в России собирают три ведомства: Росстандарт, выпускающий нормативные акты, которые устанавливают изменение ОКТМО; Росстат, собирающий разные версии ОКТМО и перекодировочные таблицы и Минфин, собирающий таблицы соответствия кодов ОКАТО кодам ОКТМО. |
Покрываемый временной период | 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) заключается в последовательном выполнении следующих действий:
- Взять список населённых пунктов из первой (самой ранней, выпущенной 28 января 2015 г.) версии открытых данных Росстата и пронумеровать их. Каждый такой номер — это guid, присвоенный путём первоначальной расстановки.
- Просмотреть остальные версии открытых данных Росстата. Если в них встречаются населённые пункты с теми же кодами ОКТМО, что и в первой версии, то присвоить тот же guid, который был присвоен в ходе первоначальной расстановки.
- Просмотреть перекодировочные таблицы. Для каждой пары «старый код — новый код», содержащейся в перекодировочной таблице, проверить, есть ли 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.
- Просмотреть список населённых пунктов региона. Если в регионе есть только один населённый пункт с каким-либо наименованием, при этом у части записей с таким наименованием есть guid, а у части — нет, то распространить guid на те записи с таким же наименованием, где guid отсутствует. Например, если в N-ской области есть только одна д Простоквашино, у которой до 2020 года был guid, а после 2020 его нет, то все записи после 2020 года получают тот же guid, что был указан для записей до 2020 года.
- Просмотреть таблицы соответствия между ОКАТО и ОКТМО (описание таблиц — в разделе «Источники данных», п. 5.3). Если населённые пункты имеют один код ОКАТО, но разные коды ОКТМО, и для одного из кодов ОКТМО известен guid, а для другого — нет, то все коды ОКТМО, имеющие один код ОКАТО, получают одинаковый guid. Например, если из таблиц соответствия следует, что город с ОКАТО 01 101 102 001 до 2020 года имел ОКТМО 01 701 000 001, а после — 01 702 000 001, то записи после 2020 года получают тот же guid, что до 2020 года.
- Вручную проанализировать записи без 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 |