Маски строковых параметров

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

В маске строкового параметра допускаются следующие символы и их комбинации:

* - любое текстовое или числовое значение (допускается пустое);

# - только числовое значение (пустое не допускается);

, - разделитель частей параметра по умолчанию (или другой как описано ниже).

Например, маска " *, *, * " описывает параметр, который должен состоять из трех частей, разделенных запятыми.

Маска " #, *, *, * " определяет параметр из четырех частей, причем первая часть должна быть целочисленной.

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

Например, " #8 " задает целочисленный параметр, состоящий из 8 цифр, а " * > 0 " задает любую непустую строку. Для контроля правильности заполнения календарных дат служат маски вида ##.##.####, ##/##/## и др.

Для задания значения по умолчанию каждой части параметра используйте =значение.

Маска также может явно задавать значение разделителя, если он отличен от запятой. Для этого первым символом маски должен быть символ-разделитель, отделенный от маски при помощи " | ".

Например, маска " |, *, *, * " определяет параметр, состоящий из трех частей, разделенных пробелом. Такую маску удобно использовать для контроля фамилии имени отчества.

Параметры, состоящие из нескольких частей, удобнее вводить (редактировать) при помощи формы ввода. Для ее вызова нажмите кнопку , которая появится на закладке Инфо для всех строковых параметров, у которых заполнено поле маски.

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

Для облегчения ввода можно присвоить имена всем полям ввода. Для этого в конце маски нужно добавить список имен полей, отделив его символом @ и разделив имена между собой символом |.

Примеры масок:

|***@Фамилия|Имя|Отчество

#3=804,*=Винницкая*,*,*,*,*,*@Код|Область|Район|Город|Улица|Дом|Корпус|Квартира

##.##.####,##.##.####@Дата начала|Дата окончания

Существуют следующие фиксированные параметры:

Line Length[N] Длины линий в объекта (параметр-массив).

Points number[N] Номера точек в объекте (параметр-массив).

Count Количество точек в объекте.

Layer ID Идентификатор слоя объекта.

Object ID Идентификатор объекта.

Слой (Layer): Наименование слоя объекта.

X: Координата X центра объекта.

Y: Координата Y центра объекта.

Z: Координата Z центра объекта.

Длина (Length): Длина (периметр) объекта (сумма длин составляющих его линий).

Площадь (Area): Геометрическая площадь объекта.

Производные параметры

Можно создавать параметры, значения которых являются производными от значений других параметров. Например, отметки высоты горизонталей и пикетов должны иметь различные атрибуты: цвет, размер шрифта, маску и т.п. Однако имеется всего один фиксированный параметр высоты (Z). В этом случае вы можете создать второй параметр, производный от высоты.

Для этого создайте новый параметр, имя которого " =P[-2] Высота горизонтали "

Первая часть названия такого параметра =P[-2] (до первого пробела) указывает, что значение параметра будет равно значению параметра с номером -2 (то есть значению высоты Z).

Далее (после пробела), следует произвольное имя параметра (в нашем случае Высота горизонтали).

Настройте желаемые атрибуты шрифта для созданного параметра.

Сделайте параметр Z (фиксированный) доступным для слоя пикетов, а вновь созданный - для слоя горизонталей. Вынесите эти параметры на карту. Теперь высоты горизонталей будут иметь свои правила отображения (коричневый цвет, маска 0.##), а высоты пикетов - свои, но в каждом случае их значения будут равны значению параметра Z.

При вводе имен производных параметров можно ссылаться не только на фиксированные параметры. Просто укажите в квадратных скобках идентификатор нужного вам параметра.

Например, имя " =P[10], P[11], P[12]" создаст суммарный параметр из значений параметров с номерами: 10, 11 и 12, разделенных запятыми.

Для вещественных и целочисленных параметров можно вводить формулы, вычисляющие значение, производное от нескольких параметров, например =P[0]*P[25], =P[15]+P[17], =P[20]/P[41].

При создании подобных формул для производных параметров используйте символы + (плюс), - (минус), * (умножить) и / (разделить).

Использование функций в производных параметрах

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

Функции для вещественных параметров:

Delta X

Размах объекта по Х -координате.

Delta Y

Размах объекта по Y -координате.

Delta Z

Размах объекта по Z -координате.

SlopeAngle

Вертикальный угол уклона объекта.

SlopeDir

Дирекционный угол направления уклона объекта.

MapScale

Масштаб карты.

Latitude

Широта центра объекта, т.е. перевод текущей координаты X в градусы широты.

Longitude

Долгота центра объекта, т.е. перевод текущей координаты Y в градусы широты.

Примечание: Удобно использовать для формирования подписей углов рамок, километровой сетки, и пр.

AreaDeviation

Cреднеквадратическая ошибка вычисления площади объекта.

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

Для приведения ошибки ее нужно умножить на реальную точность определения координат объектов карты.

Например =AreaDeviation*0.1 даст ошибку площади для точности определения координат в 0.1 м.

Функции для строковых параметров:

Для строковых параметров доступна операция сложения (объединения). Например, если параметр с номером 3 хранит название улицы, а параметр 4 номер дома, то для получения суммарного адреса создайте следующий параметр =P[3]_[P4] Адрес. Символ подчеркивания "_" используется здесь для замены символа пробел и он будет автоматически заменен пробелом при форматировании значений.

Существует также ряд функций для склонения собственных имен:

(пусть, параметр P[5] содержит фамилию: Иванов Петр Васильевич)

FIO(P[5])

Переводит фамилию, имя, отчество в фамилию с инициалами в именительном падеже (Иванов П. В.);

FIR(P[5])

Переводит фамилию, имя, отчество в фамилию с инициалами в родительном падеже (Иванова П. В.);

FID(P[5])

Переводит фамилию, имя, отчество в фамилию с инициалами в дательном падеже (Иванову П. В.);

ROP(P[5])

Переводит ФИО полностью в родительный падеж (Иванова Петра Васильевича);

DAP(P[5])

Переводит ФИО полностью в дательный падеж (Иванову Петру Васильевичу).

Правила перевода этих функций задаются следующими текстовыми файлами:

Names.txt

Содержит список всех мужских имен в именительном падеже.

Rod.txt

Содержит варианты склонения окончаний в родительный падеж для женских и мужских имен и фамилий.

Dat.txt

Содержит варианты склонения окончаний в дательный падеж для женских и мужских имен и фамилий.

Функция GET

Выполняет выделение частей параметра по запятым и пробелам.

Например, пусть параметр P[24] содержит строку:

'804, Киевская, Васильковский, пгт. Глеваха, ул. Петра Запорожца, 1, 4',

тогда:

GET([1,P[24]]) вернет '804' (первый фрагмент, деленный по запятым)

GET([5,P[24]]) вернет 'ул. Петра Запорожца' (пятый фрагмент, деленный по запятым)

GET([5/1,P[24]]) вернет 'ул.' (из пятого фрагмента берется первая часть до пробела)

GET([5/-1,P[24]]) вернет 'Петра Запорожца' (из пятого фрагмента берется все, кроме первой части)

Функция CUT

Выполняет выделение частей параметра по позиции.

Например, пусть P[26]='2567410028' тогда:

CUT(1,3,P[26]) вернет '256' (три символа, начиная с первого)

CUT(4,2,P[26]) вернет '74' (два символа, начиная с четвертого)


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: