Расчёты по семантике выделенных объектов

Печать Предыдущая страница Стартовая страница Следующая страница

clip0046 Диалог предназначен для вычисления значений семантических характеристик выделенных объектов по формулам.

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

 

Допустимые операции:

 

+              

- сложить;

-

- вычесть;

*

- умножить;

/

- разделить;

%

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

ABS(...)

- абсолютное значение;

ARM(... ,..., )

- среднее арифметическое, разделитель - «,» (запятая);

LOG(...)

- натуральный логарифм;

LOG10(...)

- десятичный логарифм;

MAX(... ,..., )

- максимальное значение, разделитель - «,» (запятая);

MIN(... ,..., )

- минимальное значение, разделитель - «,» (запятая);

SIN(…)

- sin угла в градусах;

COS (…)

- cos угла в градусах;

TG (…)

- tg угла в градусах;

CTG(…)

- ctg угла в градусах;

SQRT2(...)

- корень квадратный;

SQRT3(...)

- корень кубический;

POW2(...)

- возведение в квадрат;

POW3(...)

- возведение в куб;

SUM(...)

- суммирование значений повторяемой семантики объекта или заданных величин;

D

- дирекционный угол от первой точки;

P

- периметр (для полигона) или длина объекта;

S

- площадь объекта;

X1

- координата X первой точки в метрах;

Y1

- координата Y первой точки в метрах;

B1

- широта первой точки в градусах;

L1

- долгота первой точки в градусах;

H1

- высота первой точки (м);

- координата X центра объекта в метрах;

- координата Y центра объекта в метрах;

BC

- широта центра объекта в градусах;

LC

- долгота центра объекта в градусах;

ID

- уникальный номер объекта;

PI

- число пи;

#

- указывает, что дальше идет код семантики, в которой лежит значение, за ним в скобках может быть значение по умолчанию. Допустимо использовать цифры от 0 до 9, с разделителем «.» (точка) и скобки «( )».

 

Пример:  

#1(0) - взять значение семантики 1, при отсутствии семантики взять значение 0.

Для операций:   +, -, *, /, MAX, MIN, ABS - количество операндов не более 10.

Если в качестве операнда для операций MAX, MIN, ARM, SUM указан код повторяемой семантики, то операция выполняется над всеми значениями этой семантики - выбирается макимальное или минимальное значение, вычисляется среднее значение или сумма всех значений.

Примеры формул:

1.  Подсчет высоты люка. Предположим, что относительная глубина залегания технологического люка складывается из отметки высоты минимальной глубины прокладки и диаметра трубы. Семантика 213 (Глубина залегания) повторяемая (объект может иметь несколько записей семантик одного кода с разными значениями). Возьмем минимальное значение глубины (при отсутствии такой семантики, возьмем значение в скобках) и вычтем диаметр, вычисленный по семантике 60 (Радиус трубы). Окончательно получим:

                         min(#213(2))-#60(0.5)*2

2.  Вычисление примерного объема здания. Площадь S умножить на значение семантики 1 (Относительная высота) (при отсутствии 3):

                           S*#1(3)

3.  Подсчет площади полотна дороги. Семантику 46 (Ширину покрытия) умножим на Р – длину объекта:

                          P * #46(4)

4.  Приблизительный подсчет запаса древесины. Площадь леса S разделим на площадь, занимаемую одним деревом - семантика 61 (Расстояние между деревьями) в квадрате, и умножим на объем древесины дерева, полученный по семантикам 60 (Толщина) и 1 (Относительная высота):

                          S/(PI*#61(3)*#61(3)/4)*PI*#60(0.5)*#60(0.5)/4*#1(4)

5.  Формирование текста подписи в виде фрагмента идентификатора объекта. Например, объект имеет идентификатор вида «25701517290» в семантике 220. Нужно использовать последние 6 цифр для подписывания объекта. С помощью операции Деление по модулю можно выделить последние цифры, которые будут занесены во вспомогательную семантику (например, 221, которая будет отображаться в составе подписи или векторного знака из строки «#221»):

                          #220%1000000

 

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

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

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

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

Набранную формулу пользователь может записать в ini-файл. Если формула синтаксически неверна, ни запись, ни вычисления не проводятся. При этом выдается сообщение  «Ошибочное задание формулы» с краткой расшифровкой возможной ошибки.  

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

Если «Журнал транзакций» включен, изменения в семантики объектов записаны в журнал транзакций.

Список объектов, для которых вычисления по каким-то причинам не выполнились, заносится в протокол карты (log) в папке LOG.

По окончанию вычислений выдается сообщение о количестве успешно или неуспешно обновленных объектов.