Несмотря на наличие готовых сценариев, по настоящему серьезных результатов можно добиться только используя свой, индивидуально “заточенный” под ваши нужды сценарий. Этот сценарий будет учитывать особенности используемого в вашей работе классификатора и отображать ваши специфические требования к составлению карты.
Написать сценарий, в принципе, работа не сложная, но требующая определенного внимания и аккуратности. Далее мы рассмотрим принципы написания собственных сценариев.
Cценарий содержит набор правил проверки карты. Каждое правило задает условие сравнения определенной пары объектов, выполнение которого является ошибкой.
Правила группируются по секциям сценария, определяющим тип проверки. Тип проверки соответствует некоторому топологическому отношению, например, проверке пересечения объектов, проверке вложенности объектов и тому подобным вариантам. Также предусмотрены секции для проверки содержимого параметров и наличия подписей.
Поскольку сценарий контроля представляет собой текстовый файл, для его написания можно использовать обычный Блокнот. Однако удобнее редактировать текст сценария в окне Протокола ошибок, переключившись на закладку Редактировать сценарий. В этом окне реализована подсветка синтаксиса, поэтому читать такой сценарий намного легче.
В качестве заготовки можно использовать любой из существующих сценариев - для этого просто скопируйте его под новым именем.
В тексте сценария можно использовать комментарии. Таковыми
считаются строки, начинающиеся с символа ; (точка с запятой).
Например, в шапке универсального сценария
Control.mcs
в виде комментариев кратко даны
сведения о принципах написания сценариев.
Общая схема составления правил следующая:
[Тип проверки] Описание проверки Условие1 : Условие2 ; Строка описания ошибки
При этом:
Для случая проверок топологических отношений
Условие1
и
Условие2
указывают, какие именно
объекты войдут в пару взаимно проверяемых объектов. Возможные
условия отбора объектов:
по коду слоя;
с помощью символа-заместителя (описание применяемых символов смотрите в Табл.7.3);
с помощью указания переменной, содержащей набор слоев (псевдонима).
Переменные удобно применять, когда одни и те же наборы слоев повторяются в различных правилах. Это позволяет избегнуть многократного перечисления одних и тех же кодов. Переменная описывается строкой вида
$
и так далее через запятую.ИмяПеременной
=КодСлоя1
,КодСлоя2
,КодСлоя3
Для случая проверки содержимого параметра
Условие1
, как и в первом случае,
отвечает за отбор объектов, а Условие2
представляет собой выражение, состоящее из
кода параметра, операции сравнения и значения
параметра (то есть выражение проверки). Доступные операции
сравнения описаны в Табл.7.4.
Для случая проверки наличия подписи
Условие2
указывает
код параметра, для которого выполняется
соответствующая проверка.
Строка описания ошибки
содержит
текст, который будет отображен в протоколе. В текст ошибки можно
подставить имя слоя или параметра реально проверяемого объекта из
Условия1
и
Условия2
. Для этого следует
использовать символы заместители %L1
(для слоя
из Условия1
), %L2
(для слоя из Условия2
) и
%P
(для параметра). Смотрите «Пример сценария» ниже для лучшего
понимания.
Описание проверки
- это просто
описательная строка, помогающая лучше понять суть соответствующего
типа проверки. Ее наличие не обязательно.
Здесь мы не будем подробно останавливаться на всех типах
проверок, которые можно применять при составлении правил контроля
карты. Подробное описание с примерами применения вы можете найти в
файле Control.doc
, который находится в подпапке
Control
программной папки. В качестве образца
вы можете использовать существующие сценарии из той же папки.
Рекомендуем также ознакомиться со статьей Дарьи Сагайдак “Модуль контроля топологии и параметров карты в Digitals” на сайте программы.
Таблица 7.3. Символы-заместители, применяемые в сценарии контроля карты
Символ | Описание |
---|---|
F | Рамка (Frame) |
P | Любой точечный объект (Point) |
L | Любой линейный объект (Line) |
A | Любой пощадной объект (Area) |
O | Любой прочий объект: таблицы, изображения... (Other) |
S | Этот же объект (Self) |
N | Объект того же слоя |
* (звездочка) | Любой объект |
Таблица 7.4. Операции, доступные в сценарии контроля карт при проверке параметров
Символ | Описание |
---|---|
= | Равно |
> | Больше |
< | Меньше |
/ | Кратно |
\ | Не кратно |
<> | Не равно |
>= | Больше или равно |
<= | Меньше или равно |
Рассмотрим несколько фрагментов описаний реальных
правил контроля, взятых из сценариев
Control.mcs
и
2000.mcs
.
$Квартал=10000,70004 $Участок=20000,70005 $Угодье=30000,70009 $Смежник=50000,70010 [Parameters] Ошибки параметров и размеров A: 0<=0.01; Площадной объект %L1 имеет нулевую площадь L: -8<2; Линейный объект %L1 состоит из одной точки *: -10<0.05; Длина линии объекта меньше 5 см 44200200:119<>руїна; %L1 - ошибка в заполнении параметра %P - руїна [Not Captions] Ошибки не вынесения подписей 44200000:13; %L1 - не вынесен на карту параметр %P 44200100,44200200:119; %L1 - не вынесен на карту параметр %P [Not Inside] Ошибки не вложенности $Участок:$Квартал; Объект %L1 не лежит внутри объекта %L2 $Угодье:$Участок; Объект %L1 не лежит внутри объекта %L2 [NEARSYMBOL 3.0] 71132400:N; %L1 - частое расположение (ближе 3.0 мм.)
Пример описания переменной для набора слоев (псевдонима). | |
Заголовок секции контроля параметров. | |
Проверка параметра 0 “Площадь” для всех площадных объектов. В случае значения площади, меньшего 0.01 кв.м. выводится ошибка с указанием имени слоя проверяемого объекта. | |
Проверка соответствия содержимого параметра с кодом 119 для объектов с кодом 44200200 тексту руїна. | |
Проверка наличия подписей для параметра с кодом 119 для объектов на слоях с кодами 44200100,44200200. Правило находится в секции контроля ошибок не вынесения подписей. | |
Проверка вложенности участков в квартал. Вместо явного указания кодов слоев проверяемых объектов, здесь, как видим, используются ранее определенные переменные. | |
Проверка близости расположения объектов с кодом 71132400 по отношению к объектам того же слоя. |