Поставити питання
digitals sales • Замовлення і доставка
digitals.help • Техпідтримка
help@vingeo.com
Aнонси
02.01.2024
Відновлено роботу команди Реєстри|Земельна ділянка
03.05.2023
Набір скриптів Easywork для формування землевпорядної документації
01.08.2020
Витяг НГО земельної ділянки в межах населеного пункту
10.10.2018
Адресний реєстр назв населених пунктів і вулиць
06.12.2017
Автоматичне завантаження SRTM
24.01.2017
Автоматичний перерахунок між СК63 та УСК2000/МСК-ХХ (Реєстри|Перерахувати...)
12.03.2016
Шаблон для містобудування (ДСТУ Б Б.1.1-17:2013)
Повний перелік змін...
Модуль контроля топологии и параметров карты в Digitals
Дарья Сагайдак, sagaydak.darya@yandex.ua 
Статья описывает новый модуль проверки качества карты, встроенный в Digitals. Приведена пошаговая инструкция для начала работы с данным модулем. Рассказывается о некоторых правилах проверки.
При сборе различных элементов карт неизбежно возникает проблема контроля как взаимного геометрического расположения созданных объектов, так и правильности создания отдельно взятого объекта. Причем ошибки топологии на карте тяжело увидеть «на глаз», а порой просто невозможно. Например, увидеть пересечение полигонов при их кажущемся примыкании достаточно сложно, да и поиск нужной ошибки займет немало времени даже при условии, что исполнитель будет знать, где ее искать. Но такое случается довольно редко, поэтому ручной поиск подобных ошибок будет напоминать поиск иголки в стоге сена. В нашем же случае, таких иголок может быть великое множество в самых неожиданных местах.

На рисунке представлено пересечение двух полигонов застройки. Как видно из рисунков, рассмотреть ошибку можно только при большом увеличении, обнаружить подобный случай довольно сложно, даже приблизив карту на максимум.

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

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

Конечно, можно задать поиск незаполненных параметров через команды, присваиваемые редактируемым кнопкам на авторской панели инструментов. Но это тоже занимает довольно много времени.

Поэтому возникает необходимость поиска решения данной задачи программными средствами Digitals. Обновленная версия модуля «Карта/контроль» позволяет решать эту проблему достаточно просто и эффективно. В основе проверки лежит скрипт, содержащий запросы с условиями, выполнение которых классифицируется как ошибка. Результаты записываются в log-файл.

Краткое описание процесса подготовки и получения конечного результата можно разделить на несколько этапов:
1. Обновить версию Ged.exe и создать в корневом каталоге программы папку Control.
Данная обновленная версия модуля «карта/контроль» работает для версии Ged.exe 10 марта 2009 г и позже.

2. Написать сценарий проверки и сохранить его с расширением *.mcs в созданной папке.
Редактировать скрипт можно как в любом текстовом редакторе, так и в самом модуле проверки.

3. В окне «Настройки» на главной странице прописать константу ControlScript=
В случае, если в папке Control хранятся несколько файлов сценариев, то данной конcтанте присвоить название нужного скрипта.

4. Запустить «Карта/контроль» и подождать некоторое время, которое понадобится для выполнения всех проверок.

На пункте 2 остановимся подробнее.

Сценарий проверки состоит из набора условий, выполнение которых определяется как ошибка. Условия описываются следующими математическими операциями сравнения и равенства:
; = - Равно
; > - Больше
; < - Меньше
; / - Кратно
; \ - Не кратно
; <> - Не равно
; >= - Больше или равно
; <= - Меньше или равно
Для условия можно использовать следующие обозначения:
; F - Рамка (Frame)
; P - Любой точечный объект (Point)
; L - Любой линейный объект (Line)
; A - Любой пощадной объект (Area)
; O - Любой прочий объект: таблицы, изображения... (Other)
; S - Этот же объект (Self)
; N - Объект того же слоя
; * - все объекты на карте.

Кроме того, проверка может выполняться над каждым слоем в отдельности, если используются объекты разных слоев, то нужные слои указываются в условии через запятую. Обращение к объектам происходит по ID слоя.

Тело запроса выглядит следующим образом:

[Топологическое отношение]
Проверяемый объект: объект, с которым производится проверка; описание найденного несоответствия

В случае, для проверки параметров объектов условие соответствия выбранным значениям параметров пишется после блока описания проверяемых объектов. Т.е. запрос будет таким:

[Parameters]
Проверяемый объект: номер параметра условие; описание полученного несоответствия

Если для задания условия часто используется определенная группа слоев, то этой группе слоев можно присвоить переменную и в дальнейшем обращаться именно к ней.

Например, группа «дороги» может содержать несколько слоев – «проезжая часть с покрытием», «проезжая часть без покрытия», «тротуары без покрытия», «тротуары с покрытием» и т.д:


$дороги=61342000, 61341000, 61344000, 61343000

где 61342000, 61341000, 61344000, 61343000 – ID слоев.

Тогда вместо ID слоев в теле запроса запишем обозначающую их переменную. Например, запрос на выборку всех объектов, принадлежащим к «дорожным слоям» и которые примыкают к объектам класса «здание» без узловой точки будет выглядеть следующим образом:

[join]
$дороги: здания; объекты слоя %L1 не примыкают к объектам слоя «здания»

где %L1 - название проверяемого слоя; %L2 – название слоя, с которым производится проверка.

Топологические отношения, подлежащие контролю:
Пересечение

К ошибке приводит пересечение объектов, принадлежащих указанным в условии слоям. Пересекаться могут как линейные, так и полигональные объекты. Также можно найти пересечение объектов, принадлежащих одному слою. (Последнее замечание относится ко всем проверяемым условиям).

Например, на рисунке показано пересечение здания (белым, ID слоя - 44200000) с границей бортового камня (черным цветом, ID слоя – 613500000). Чтобы обнаружить такую ситуацию, нужно написать следующий запрос:

[intersect] ошибка пересечения
44200000: 613500000; объект %L1 пересекается с объектом %L2

В результате выполнения данного запроса будут выявлены все подобные ошибки.
Кроме ошибок геометрии можно проверять расположение подписей на карте и значения параметров объектов.

Ошибки значений параметров
С помощью этого условия можно выполнять различные проверки. Можно использовать как стандартные параметры объектов, так и пользовательские. Например, для проверки локализации объектов можно использовать стандартный параметр под номером 8 – Count, который обозначает количество точек объекта.

Например, если в условии проверки написать следующее:

[Parameters]
L:-8<2;

то в результате данного запроса будет выведены ошибки по тем линейным объектом, которые состоят из 1 точки, т.е. число точек в каждом объекте меньше двух.

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

[Parameters]
44200000:-8<3; объект %L1 имеет менее 3 точек

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

[Parameters]
44200000: 100=; добавить количество этажей для данного здания

где 100 – это номер параметра, содержащего количество этажей, а 44200000 – ID слоя «здания». Таким образом, в результате проверки будут найдены те здания, у которых не заполнен этот параметр.

Также можно отсеять объекты, площадь которых меньше заданной. Условие будет выглядеть следующим образом

[Parameters]
A: 0<10; площадь объекта %L1 меньше 10 кв.м

Данная проверка покажет все площадные объекты, площадь которых 10 кв м в масштабе карты.

Обсудить статью.

© 2008-2023 ТОВ «Аналітика»