Функции в производных параметрах

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

Примечание

Приведенный ниже список функций не исчерпывающий, но все же охватывающий большую их часть. Функции активно применяются не только в производных параметрах, но и при разработке шаблонов документов и отчетов. Мы будем дополнять список функций по мере изучения этих возможностей.

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

Рассмотрим операции и функции, доступные для работы с параметрами типа Вещественное:

+ (плюс), - (минус), * (умножить), / (разделить), () (скобки)

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

Например, чтобы вычислить среднее из содержимого двух параметров, нужно определить параметр вида “=(P[1]+P[2])/2 Среднее значение”.

DeltaX, DeltaY, DeltaZ

Функции возвращают размах объекта по Х-координате, Y-координате и Z-координате соответственно.

SlopeAngle

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

SlopeDir

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

ObjectScale

Позволяет выяснить масштаб объекта, вставленного в карту командой Правка > Специальная вставка > В другом масштабе…. Также применяется в шаблонах документов DMT с автомасштабом.

Latitude, Longitude

Возвращают широту и долготу центра объекта соответственно.

AreaDeviation

Возвращает среднеквадратическую ошибку вычисления площади объекта, исходя из условия, что точность определения координат объекта составляет 1 метр. Для приведения ошибки, через * (звездочку) следует указать реальную точность определения координат объектов карты.

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

Length3D

Вычисляет трехмерную (пространственную) длину объекта. Напомним, что фиксированный параметр с кодом -1 “Длина” вычисляет длину без учета координаты Z (то есть в проекции на горизонтальную плоскость).

Рассмотрим операции и функции, доступные для работы с параметрами типа Строка:

_ (подчеркивание)

Используется в качестве замены пробелу при конкатенировании текстовых параметров. (Напомним, что символ пробела используется для отделения выражения от имени параметра, поэтому использовать его напрямую при соединении строк нельзя.)

Например, соединить два параметра через пробел в одну строку можно таким образом: “=P[1]_P[2] Два в одном”.

FIO(Строка)

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

Например, если параметр номер 10 содержит строку Иванов Иван Иванович, то параметр вида “=FIO(P[10])” вернет Иванов И. И.

ROP(), FIR()

Склоняют в родительный падеж (Кого? Чего?). Функции возвращают полную и короткую форму имени соответственно. Например: Иванова Ивана Ивановича и Иванова И. И.

DAP(), FID()

Склоняют в дательный падеж (Кому? Чему?).

VIP(), FIV()

Склоняют в винительный падеж (Кого? Что?).

TVT(), FIT()

Склоняют в творительный падеж (Кем? Чем?).

PRP(), FIP()

Склоняют в предложный падеж (О ком? О чем?).

Правила преобразования окончаний для каждого падежа задаются во внешних файлах, находящихся в программной папке. Сперва программа просматривает файл Names.txt, содержащий мужские имена. Затем из файлов Rod.txt, Dat.txt, Vin.txt, Tvo.txt, Pre.txt выбирается подходящее окончание (каждый из файлов отвечает за определенный падеж).

Файлы окончаний содержат три колонки: исходное окончание, окончание для мужских имен, окончание для женских. Если определенная строка окончаний помечена символом M или F, то эти окончания применяются только для мужского или женского имени соответственно.

LEN(Строка)

Возвращает длину строки. Строку можно задать ссылкой на параметр.

POS(Подстрока,Строка)

Возвращает позицию первого вхождения Подстроки в Строке.

CUT(НачальныйСимвол,Количество,Строка)

Вырезает часть Строки начиная с НачальногоСимвола и длиной в Количество. Например, “=CUT(4,2,P[26])” вернет два символа начиная с четвертого из параметра с номером 26.

CLP(Количество,Строка)

Возвращает Строку, обрезанную справа на Количество символов. Аргумент Количество может быть выражением.

FST(Лимит,Строка), RST(Лимит,Строка)

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

Функции обычно работают в паре и применяются для разбивки длинной Строки на две части. Пример применения данных функций можно найти в шаблоне госакта Госакт (голубой) лицевая.DMT.

CLA(Строка)

Убирает из Строки комбинации ,- (запятая и дефис). Используется для подчистки пустых полей из значений параметров, предназначеных для хранения тегов обменного файла IN4.

GET(Часть,Строка)

Выполняет выделение частей из строки по запятым и пробелам. Функция в основном используется при работе с параметрами объектов обменных кадастровых файлов формата IN4.

Допустим, что параметр с номером 1 содержит строку один,два,три четыре пять. В этом случае:

  • функция GET(1,P[1]) вернет значение один, то есть первую часть строки, считая разделителем запятую.

  • функция GET(3/2,P[1]) вернет значение четыре, то есть сначала возьмет третью часть строки, считая разделителем запятую, а затем вторую часть из получившейся строки, считая разделителем пробел.

  • функция GET(3/-2,P[1]) вернет значение три пять, то есть возьмет третью часть строки, считая разделителем запятую, а затем из получившейся строки - все части кроме второй, считая разделителем пробел.

SEL(ПроверяемоеЗначение,Вход1|Выход1|Вход2|Выход2|...|*|ВыходПрочее)

Функция работает как условный оператор. Программа сравнивает ПроверяемоеЗначение с входными значениями и выдает соответствующее выходное значение. Если четкого соответствия не найдено, то срабатывает вариант помеченный * (звездочкой). Выходным значением может быть любая текстовая строка, ссылка на другой параметр или функциональное выражение.

Например, если в параметре номер 3 задано некое число, то параметр “=Sel(P[3],1|Один|2|Два|3|Три|*|P[15])” вернет Один, Два, Три - для чисел 1, 2, 3 соответственно, и содержимое параметра номер 15 - для всех остальных чисел.

SEF(ПроверяемоеЗначение,ИмяФайла)

Аналог функции SEL для длинных выражений. В этом случае, пары Вход Выход записываются через табуляцию во внешнем файле, размещенном в папке Lists программной папки, по одной паре на строку файла. Выход может содержать ссылку на параметр или выражение.

Для примера, загляните в файл BlueActF.txt, который используется совместно с шаблоном документов Госакт (голубой) лицевая.DMT.

FIL(Файл,Константа)

Возвращает значение Константы заданной в Файле, размещенном в папке Templates програмной папки. Значения констант задаются строками вида Константа=Значение.

Изначально функция задумана для автоматизации подстановки реквизитов исполнителя, названий органов местной власти, имен должностных лиц и прочих значений при генерации документов из шаблонов. Подробнее смотрите в Гл.12, «Применение в землеустройстве».

FFF(ИмяФайла)

Позволяет разместить длинное выражение во внешнем файле, размещенном в папке Lists программной папки. (Длина имени параметра ограничена 127 символами, поэтому записать в него слишком длинную формулу не получится.)

Например, параметр может выглядеть как “=FFF(formula.txt)”, а файл formula.txt содержать, в свою очередь, строку с реальным выражением.

XPT(XMLСтрока,"ИмяУзла")

Функция возвращает текстовое значение узла из XMLСтроки по пути (XPath-запросу), указанному в аргументе функции ИмяУзла. Имя узла заключается в кавычки.

Функция применяется для извлечения данных из строк в формате языка XML. Изучение XPath выходит за рамки данной книги. В общем случае, путь к элементу файла формата XML напоминает путь к файлу в операционной системе.

XMP(СмежникПоУмолчанию)

Получает данные из параметра “Додаткова інформація”, если он не пустой. Иначе данные берутся из параметра “Власник або розпорядник”.

Функция предназначена для извлечения информации из объектов слоя “XML: Суміжник” при работе с обменными файлами формата XML. Применяется в таблицах смежников в шаблонах документов.

SQL(СтрокаЗапроса)

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

Функции для получения общей информации:

MapFile

Возвращает полное имя файла текущей карты.

MapScale

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

Date

Возвращает текущую дату, установленную на компьютере.