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

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

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

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

 

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

 

+              

- сложить;

-

- вычесть;

*

- умножить;

/

- разделить;

%

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

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

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

- координата 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.

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