Руководство по установке#
Получение выписки по ОКС из ЕГРН - это электронное информационное взаимодействие с ЕГРН (Росреестр) в части импорта выписок из ЕГРН и синхронизации БД.
Примечание
Данные каталога «Сведения ЕГРН» вносятся в Систему только путем импорта сведений, полученных из Росреестра, и недоступны для изменения вручную.
В Систему можно загрузить следующий перечень xml-схем, используемых для формирования xml-документа.
В процессе импорта каждый объект из xml-файла сопоставляется с объектами в Системе.
Важно
Импорт сведений ЕГРН могут выполнять пользователи, которым назначена роль ias:gkn:importer (см. pravadostupa).
В результате сопоставления в Системе происхоит:
создание новых объектов;
обновление существующих объектов (обновляется координатное описание и значения атрибутов);
перевод объектов в архив.
Импорт геометрии объектов#
В БД хранятся следующие типы геометрии:
[multi]point
[multi]linestring
[multi]polygon
Объект-коллекция
Сохраняемая в БД геометрия должна быть корректной. Это можно проверить с помощью функции is_valid: проверка возвращает true и отсутствуют дублирующиеся точки и полигоны. Объект-коллекция для одного объекта в БД имеет более одного описания геометрии.
Алгоритм преобразования геометрии из xml в GeoJson#
Для преобразования геометрии из формата xml в формат GeoJson Система выполняет следующий сценарий:
Извлекается геометрия объекта из xml-файла
Обрабатываются контуры
Если геометрия в xml-файле представлена в виде отдельных контуров contour, то результатом разбора геометрии всегда будет мультиполигон.
2.1. Выделяются элементы контура и определяются типы геометрии для каждого элемента:
point - имеет одну координату в элементе;
linestring - имеет две и более координат, где первая и последняя не совпадают;
polygon - имеет три и более координат, где первая и последняя совпадают.
2.1.1. Для типов linestring и polygon удаляются повторяющиеся точки.
2.1.2. Для типа polygon удаляются дубли контуров.
2.1.3. Если после выполнения шага 2.1.1. для linestring осталось одна точка, элемент сохраняется как point.
2.1.4. Если после выполнения шага 2.1.1. для polygon осталось две точки, элемент сохраняется как linestring, а если одна точка, то элемент сохраняется как point.
2.2. Однотипные элементы объединяются в [multi]типы.
2.3. Если на шаге 2.2. получены разные типы геометрии, то геометрия преобразовывается в коллекцию.
Выполняется проверка корректности для мультиполигонов. Если обнаружено пересечение, то геометрия сохраняется как коллекция, т.е. имеет несколько записей геометрии (см. варианты преобразования геометрии ).
Результат сохраняется в GeoJson, с последующей записью в БД.
Варианты преобразования геометрии
Ро - один полигон с вырезанным внутренним контуром;
Р - полигон;
GC - коллекция;
МР - мультиполигон;
L - полилиния;
ML - мультилиния
В xml-файле объект представлен одним контуром <Countour>, в котором описано несколько геометрических элементов <spatial_element>
Два полигона, один внутри другого. Результат: Po
Два полигона, один внутри другого с пересечением в одной точке. Результат: Po
Два полигона, один внутри другого с пересечением в двух точках. Результат: GC(P, P)
Один внешний полигон и один внутри него, у внутреннего полигона ребро лежит на одной линии с ребром внешнего. Результат: GC (P, P)
Два непересекающихся полигона. Результат: MP
Два пересекающихся полигона. Результат: GC (P, P)
Два касающихся полигона. Результат: GC (P, P)
Два пересекающихся полигона и два касающихся полигона. Результат: GC (MP, P) - непересекающиеся полигоны объединяются в мультиполигон.
Полигоны пересекаются. Результат: GC (MP, P)
Полигоны имеют общее ребро. Результат: GC (Po, P)
Два полигона с пересечением, у одного из них есть внутренний контур. Результат: GC (P, Po)
Два полигона с касанием в одной точке, у одного из них внутренний контур. Результат: MP(Po,P) - мультиполигон с внутренним контуром.
Два полигона с пересечениями в двух точках. Результат: MP
Полигоны пересекаются каждый с каждым. Результат: GC (P, P, P)
Два пересекающихся полигона и полилиния, не имеющая пересечений. Результат: GC (P, P, L)
Два внутренних контура вырезаны из полигона, две полилинии не имеют с ним пересечений. Результат: GC (Po, ML)
Два внутренних кольца вырезаны из полигона, полилиния не имеет с ним пересечений. Результат: GC (Po, L)
Один внешний полигон и два внутри него, у полигона справа ребро лежит на одной линии с ребром внешнего. Результат: GC (Po, P)
Три полигона накладываются друг на друга, один полигон включен целиком в два других. Результат: GC (P, P, P)
Три полигона накладываются друг на друга не пересекая границ. Результат: GC (P, P, P)
Три полигона накладываются друг на друга, не имеют смежных границ, но имеют пересечение в нескольких точках. Результат: GC (P, P, P)
В xml-файле объект представлен несколькими контурами <Contour>, в которых описано несколько геометрических элементов <spatials_element>
Принадлежность полигона к контуру <Contour> определяется цветом границы
Два контура, один внутри другого. Результат: GC (P, P)
Контур, состоящий из полигона с внутренним контуром, внутри другого контура. Результат: GC (Po, P)
Контур состоит из полигона с внутренним контуром, пересекающего с другой полигон и лежит внутри другого контура. Результат: GC (Po, P, P)
Один из полигонов контура лежит полностью в полигоне другого контура. Результат: GC (MP, P)
Контур состоит из полигона с внутренним контуром и оба контура пересекаются с полигоном другого контура. Результат: GC (Pо, P)
Контур состоит из полигона с внутренним контуром и его внешний контур пересекается с полигоном другого контура. Результат: GC (Pо, P)
Контур состоит из полигона с внутренним контуром и его внешний контур пересекается с полигоном другого контура только в одной точке. Результат: GC (Pо, P)
Контур состоит из пересекающихся полигонов с внутренним контуром, внутри другого контура. Результат: GC (Po, P)
Контур состоит из полигона с внутренним контуром и его внутренний контур полностью пересекается с полигоном другого контура. Результат: GC (P, Po)
Контур, состоящий из двух непересекающихся полигонов лежит внутри полигона другого контура, при этом один из полигонов касается его границы. Результат: GC (P, MP)
Полигон контура лежит внутри полигона другого контура, при этом не пересекает его внутренним контур и касается внешней границы. Результат: GC (Po, P)
Два контура пересекаются в отдельных точках. Результат: МP
Два контура c внутренними контурами. Один из контуров состоит из двух полигонов с внутренними контурами и только один полигон контура пересекается с другим контуром. Результат: GC (Po, MPo)
В xml-файле объект представлен тремя или более контурами <Contour>, в которых описано несколько геометрических элементов <spatials_element>
Три контура, один внутри другого. Результат: GC (P, P, P)
Три контура, один пересекает два других, которые между собой не пересекаются. Результат: GC (P, P, P)
Два непересекающихся контура лежат внутри другого контура, при этом один из контуров касается границы. Результат: GC (P, P, P)
Один контур лежит внутри другого контура, который пересекается с третьим контуром. Третий контур не пересекается с первым. Результат: GC (P, P, P)
Один контур лежит внутри другого контура, который касается с третьим контуром. Результат: GC (P, P, P)
Три контура пересекаются, один из контуров полностью лежит в двух других контурах. Результат: GC (P, P, P)
Три непересекающихся контура. Результат: MP
Три контура, два из которых пересекаются. Результат: GC (P, P, P)
Три контура, один из которых состоит из двух пересекающихся полигонов. Результат: GC (P, P, P, P)
Изменение количества одновременных заданий на импорт#
Количество одновременных заданий на импорт данных ЕГРН в журнале импорта можно изменить.
Для изменения в СУБД перейдите к схеме regadm и откройте таблицу m_global_settings.
В строке со значением столбца setting_type равным 16 измените значение столбца value на {«MaxAsyncImportTasks»: N}, где N - это необходимое количество одновременно выполняемых заданий.
Если такая строка отсутствует в таблице, то количество заданий равно 4.
Для изменения количества одновременных заданий на импорт данных ЕГРН добавьте строку {«MaxAsyncImportTasks»: N} в таблицу m_global_settings и задайте нужное значение.
Если количество выполняемых заданий уже равно максимальному, а пользователь начинает импорт, то задание попадает в очередь.
Важно
Для вступления в силу внесенных изменений в таблице m_global_settings, перезапустите сервис службы импорта ЕГРН.
Задания в очереди будут выполняться по мере завершения действующих заданий в том порядке, в котором они попали в очередь.
В какой системе координат загружаются данные#
По умолчанию, при загрузке данных ЕГРН, система координат не определяется. Данным ЕГРН, которые загружаются в Систему, устанавливается проектная СК. Поэтому, если данные ЕГРН получены в СК отличной от проектной СК, то перед загрузкой в Систему нужно их преобразовать.
Автоматически определить и преобразовать систему координат данных, полученных из ЕГРН, в СК проекта позволяет дополнительный модуль Автоматическое определение системы координат при импорте ЕГРН
Удаление временных файлов с сервера#
Раз в 24 часа запускается проверка временных файлов и удаление ненужных. Удаляются целиком папки, если файлы в них не изменялись больше 5 дней и в данный момент нет запущенных задач на импорт, которые соответствуют удаляемой папке. Наименование папки соответствует наименованию задачи импорта.
Файлы конфигурации#
В Систему можно загрузить следующий перечень xml-схем, используемых для формирования xml-документа.
Система использует в процессе импорта данных файлы конфигурации, в которых указано сопоставление между поступающим на вход импорта XML-файлом и объектами системы.
Для каждого типа сведений используется свой файл конфигурации. В файле конфигурации с помощью тегов и атрибутов описано как следует импортировать те или иные сведения в систему.
Пример части структуры файла конфигурации:
<?xml version="1.0" encoding="utf-8"?>
<UpdaterConfig>
<Scheme Name="extract_about_property_land">
<Type Alias="GknParcel" MainTableType="parcel">
<Field Name="KN" Expression="{cadNum}" IsLink="True" TableType="parcel"/>
<Field Name="CadastralBlocks" Expression="{cadblock}" IsRef="True" RefAliasName="GknCadastralBlocks"
RefTableField="Number" RefTableKeyField="KeyField" TableType="parcel"/>
<Field Name="RegDate" Expression="{registrationdate}" TableType="parcel"/>
<Field Name="CancelDate" Expression="{canceldate}" TableType="parcel"/>
<Field Name="RegDateByDoc" Expression="{regdatebydoc}" TableType="parcel"/>
<Field Name="ParcelUseKind" Expression="{usekind}" IsRef="True" IsDictionary="True"
RefAliasName="GknRefParcelUseKind" RefTableField="Code" RefTableKeyField="KeyField" NeedCreate="true"
RefFieldsName="usekind" TableType="parcel"/>
</Type>
</Scheme>
</UpdaterConfig>
Атрибуты внутри тегов могут описывать какие-либо сведения об объекте или обозначать те или иные флаги.
Для управления обновлением или пересозданием объектов используются два флага — TakeExistingMMR
и DeleteOldObject
.
Атрибут TakeExistingMMR
указывает, что к полям текущего объекта будут добавлены новые связанные объекты. Наличие атрибута со значением True означает, что существующий связанный объект необходимо обновить. Отсутствие атрибута говорит о том, что нет необходимости менять связанный объект.
Атрибут DeleteOldObject
указывает, следует ли удалять старые объекты и связанные с ними внутренние объекты. Наличие атрибута со значением True означает, что существующий связанный объект и всего его внутренние связи и объекты необходимо удалить. Отсутствие атрибута говорит о том, что нет необходимости удалять связанные объект и его внутренние связи и объекты.
Примечание
При наличии двух атрибутов, атрибут TakeExistingMMR
преобладающий.
В таблице ниже описаны все комбинации зависимости входных данных и атрибутов и то, что происходит в том или ином случае.
Значение атрибута TakeExistingMMR |
Значение атрибута DeleteOldObject |
Наличие данных в импортируемом XML-файле |
Описание происходящего |
---|---|---|---|
Присутствует и установлен в True |
Присутствует и установлен в True |
Да |
Обновляются поля текущего объекта, связь со связанным объектом не разрывается. Созданные связанные объекты добавляются в соответствующие поля объекта, дополняя уже существующие |
Присутствует и установлен в True |
Присутствует и установлен в True |
Нет |
Ничего не обновляется, связь с связанным объектом не разрывается |
Присутствует и установлен в True |
Присутствует и установлен в False или отсутствует полностью |
Да |
Обновляются поля текущего объекта, связь со связанным объектом не разрывается. Созданные связанные объекты добавляются в соответствующие поля объекта, дополняя уже существующие |
Присутствует и установлен в True |
Присутствует и установлен в False или отсутствует полностью |
Нет |
Ничего не обновляется, связь с связанным объектом не разрывается |
Присутствует и установлен в False или отсутствует полностью |
Присутствует и установлен в True |
Да |
Связь с связанным объектом разрывается, связанный объект удаляется, создаётся новый и привязывается к основному объекту. Если у объекта, в котором установлен атрибут, есть связанные вложенные объекты, они также будут удалены и созданы новые |
Присутствует и установлен в False или отсутствует полностью |
Присутствует и установлен в True |
Нет |
Связь с связанным объектом разрывается, связанный объект удаляется. Если у связанного объекта, в котором установлен атрибут, есть связанные вложенные объекты, они также будут удалены |
Присутствует и установлен в False или отсутствует полностью |
Присутствует и установлен в False или отсутствует полностью |
Да |
Связь со связанным объектом разрывается, создаётся новый связанный объект и связывается с объектом |
Присутствует и установлен в False или отсутствует полностью |
Присутствует и установлен в False или отсутствует полностью |
Нет |
Связь со связанным объектом разрывается, все вложенные объекты и связи между ними будут сохранены |