Использование выражений

Использование выражений недоступно(кроме создания отчетов) в Lite-модификации

В состав Geozem входит разборщик выражений (парсер). Разборщик выражений используется:

- при создании отчетов;

- при формировании строки обозначения названий, стилей, цвета точек, линий, полигонов, текстов;

- при импорте и экспорте в формат MIF/MID;

- при создании списка смежников;

Его цель – вычислить значение типа "1 + 2 * (3 + 4)", переданное в виде строки. Он обрабатывает математические и логические выражения, операции сложения строк, внешние переменные и функции.

В выражении можно использовать строковые константы. Правила их использования такие же, как и в Pascal: строка - это последовательность символов, заключенная в одинарные кавычки, например: "Hello, World!". Если строка содержит одинарную кавычку внутри, то ее необходимо дублировать: "What""s new".

Также в выражении можно использовать переменные, например: "[Total amount] / 2".

Типы данных

Название Диапазон значений Описание
Boolean True / False Логический (0-false, 1-true)

Byte

0 ... 255

Короткое целое без знака

Word

0 ... 65535

Короткое целое без знака

Integer

-2147483648 … +2147483647

Длинное целое со знаком

Double

-5.0*10-324… +1.7*10308

Вещественное число с плавающей запятой

String

До 255 символов

Строка символов

Variant

В зависимости от типа

Произвольный тип данных

Создание отчётов

Более полную инструкцию по использованию разборщика выражений при формировании отчетов можно найти в справке генератора отчетов FastReport.

Функции в отчётах

Название функции, типы параметров Назначение

Функции Geozem

TosCalc(n: Integer; s: String): String

Вычисляет название точки с номером (n), согласно строке для парсера (s)

LinCalc(n: Integer; s: String): String

Вычисляет название линии с номером (n), согласно строке для парсера (s)

PolCalc(n: Integer; s: String): String

Вычисляет название полигона с номером (n), согласно строке для парсера (s)

OldTosCalc(n: Integer; s: String): String

Вычисляет старое название точки с номером (n), согласно строке для парсера (s)

OldLinCalc(n: Integer; s: String): String

Вычисляет старое название линии с номером (n), согласно строке для парсера (s)

OldPolCalc(n: Integer; s: String): String

Вычисляет старое название полигона с номером (n), согласно строке для парсера (s)

GeoCalc(s: String)

Устанавливает, как надо вычислять названия точек при формировании ведомости координат, согласно строке для парсера (s)

GetGeodan:string;

Формирует ведомость геоданных

ExtractFileName(s: String): String

Возвращает имя файла (s). Путь к файлу отсутствует.

TosValue(n: Integer; s: String): Variant

Возвращает значение свойства точки с номером (n), имя свойства (s)

LinValue(n: Integer; s: String): Variant

Возвращает значение свойства линии с номером (n), имя свойства (s)

PolValue(n: Integer; s: String): Variant

Возвращает значение свойства полигона с номером (n), имя свойства (s)

PolTosValue(n1, n2: Integer; s: String): Variant

Возвращает значение свойства стороны полигона (n1) под номером (n2), имя свойства (s)

TxtValue(n: Integer; s: String): Variant

Возвращает значение свойства текста с номером (n), имя свойства (s)

SetTosValue(n: Integer; s: String; v: Variant)

Установка для точки с номером (n), свойства с именем (s), значение (v)

SetLinValue(n: Integer; s: String; v: Variant)

Установка для линии с номером (n), свойства с именем (s), значение (v)

SetPolValue(n: Integer; s: String; v: Variant)

Установка для полигона с номером (n), свойства с именем (s), значение (v)

SetPolTosValue(n1, n2: Integer; s: String; v: Variant)

Установка для полигона (n1) стороны (n2), свойства с именем (s), значение (v)

SetTxtValue(n: Integer; s: String; v: Variant)

Установка для текста с номером (n), свойства с именем (s), значение (v)

ListTosValue(s: String): Variant

Возвращает значение свойства списка точек с именем (s)

ListLinValue(s: String): Variant

Возвращает значение свойства списка линий с именем (s)

ListPolValue(s: String): Variant

Возвращает значение свойства списка полигонов с именем (s)

ListTxtValue(s: String): Variant

Возвращает значение свойства списка текстов с именем (s)

DataValue(s: String): Variant

Возвращает значение свойства списка всех типов объектов с именем (s)

ListSmej(name:string):variant

Возвращает значение свойства списка смежников с именем (name)

LocateLine(n1: Integer; n2: Integer) : Integer

Поиск номера линии по номерам точек (n1 и n2), если линия не найдена, возвращает 0

Reload()

Загрузка данных заново (если производились изменения свойств объектов)

function CloseReport Закрывает окно отчёта

GetValue(s: String): Variant

Прочитать значение переменной с именем (s) из списка переменных

SetValue(s: String; v: Variant)

Записать значение (v) переменной с именем (s) из списка переменных

SELECT(name: String; s: String): String

Возвращает результат SQL-запроса (s) к базе данных (name – имя базы данных). Подробнее…

SQL(name: String; s: String)

Выполняет произвольный SQL-запрос (s) к базе данных (name – имя базы данных). Подробнее…

RisPlan(View: TFrxPictureView; wir: string=""; ms:double=-1)

Рисование плана. Ссылка на объект-рисунок (View), выражение для рисования (wir), масштаб (ms).

Значения масштаба: -1 – выбор из списка, 0 – подогнать под окно,

>0 – значение масштаба (500, 1000, 2000)

RisPlanCXY(View:TFrxPictureView; CX,CY:double; wir:string=""; ms:double=-1)

Рисование плана с указанием центра рисунка. Ссылка на объект-рисунок (View), координаты центра плана (CX, CY); выражение для рисования (wir), масштаб (ms).

Значения масштаба: -1 – выбор из списка, 0 – подогнать под окно,

>0 – значение масштаба (500, 1000, 2000)

GetXYM(View:TFrxPictureView; var x,y, mas:double):boolean

Найти параметры плана – возвращает успешность операции. Ссылка на объект- рисунок (View), возврат координат центра (x, y), возврат минимального масштаба (mas).

CalcMinMas(View:TFrxPictureView; rx,ry:double):double

Найти минимальный масштаб для объекта с размерами (rx, ry). Ссылка на объект- рисунок (View)

RisCell(View:TFrxPictureView; hag:double; tos_style:integer=-1; lin_style:integer=-1; tos_color:TColor=0; lin_color:TColor=0)

Нарисовать координатную сетку (центр в точке 0,0). Ссылка на объект-рисунок (View), шаг сетки (hag), стиль точки для обозначения узла (tos_style), стиль линии для обозначения сетки (lin_style), цвет точки (tos_color), цвет линии (lin_color)

RisCellXY(View:TFrxPictureView; nx, ny:double; hag:double; tos_style:integer=-1; lin_style:integer=-1; tos_color:TColor=0; lin_color:TColor=0)

Нарисовать координатную сетку с указанием координат одного узла сетки. Ссылка на объект-рисунок (View), координата x узла (nx), координата y узла (ny), шаг сетки (hag), стиль точки для обозначения узла (tos_style), стиль линии для обозначения сетки (lin_style), цвет точки (tos_color), цвет линии (lin_color)

GetCellXY(nX, nY:double; hag:double; iX, iY:integer; var eX, eY, X, Y):boolean;

Вычислить координаты узла сетки. Координаты начала сетки (nX, nY), шаг сетки (hag), номера узла сетки (iX, iY). Возвращаются экранные координаты узла (eX, eY) и реальные координаты (X,Y). Функция возращает True, если узел сетки находится в области рисунка.

CalcHeight(rz:double; mas:double):double

Вычислить реальный размер (высоту) по размеру (rz) на рисунке с масштабом (mas)

CalcWidth(rz:double; mas:double):double

Вычислить реальный размер (ширину) по размеру (rz) на рисунке с масштабом (mas)

SetFileName(fn:string)

Установка имени файла экпорта.

GetOMS_ID(x,y:double):integer

Найти номер пункта ОМС из списка опорных пунктов по координатам (x,y). Если не найдено, возвращает -1.

GetOMS_Value(n:integer; name:string):Variant

Вернуть значение свойства пункта ОМС под номером (n) с названием (name):

"nazw" - Название;

"x" - Координата Х;

"y" - Координата Y;

"opis" – Описание;

"klass" - Класс сети;

"typs" - Тип знака;

"sk" - Система координат;

GetSpisok(idstr:string):string

Вернуть список в виде длинной строки по идентификатору (idstr). Если не найдено, возвращает пустую строку.

GetSpisokID(idstr:string):integer

Вернуть номер списка по идентификатору (idstr). Если не найдено, возвращает -1.

SpisokAdd(idstr:string; str:string):boolean

Добавление в список по идентификатором (idstr) строки (str). Возвращает результат добавления: true – успешно добавлено, false- не добавилось.

function GetLayer:TGZM_Layer Возвращает ссылку на объект текущего слоя
function GetPoint:TGZM_PointC Возвращает ссылку на объект текущей точки
function GetPolygonPoint:TGZM_PointC Возвращает ссылку на объект текущей точки полигона
function GetPolygon:TGZM_PolygonC Возвращает ссылку на объект текущего полигона
function GetPolygonSegment:TGZM_PolygonPoints Возвращает ссылку на объект текущего сегмента полигона
function GetLine:TGZM_LineC Возвращает ссылку на объект текущей линии
function UglStr(ug:double):string Возвращает угол в виде строки ГГГ°ММ"CC", параметр n-десятичное значение угла.
function UglRumb(ug:double):string Возвращает угол в виде румба, параметр n-десятичное значение угла.
function LeftUgl(ug:double):double Преобразование десятичного угла (n) из правого в левый и наоборот.
function UglUrw(ug:double):double

Уравнивание угла, т.е. при 270+180=90 вместо 450

function DlinLin(x1,y1,x2,y2:double):double Возвращает длину линии от 1 точки (x1,y2) до 2 точки (x2,y2)
function GetUgLins(x1,y1,x2,y2,x3,y3:double):double Возвращает угол между линиями (x1,y1)-(x2, y2) и (x1,y1)-(x3, y3)
function DirUgol(x1,y1,x2,y2:double):double Возвращает дирекционный угол линии (x1,y1)-(x2, y2)
function EOLN:string Возвращает символы перехода на новую строку : chr(13)+chr(10)
function StringToText(st:string):string Возвращает строку, заключенную в апостофы
function DoubleVal(st:string):double Преобразует из строки (s) число. Строка может содержать пробелы снаружи и внутри, разделитель дробной части точка или запятая.
function PropisValue(Value: extended; style_rub:integer=0; style_kop:integer=0):string Возвращает число (Value) прописью (по русски в рублях), параметры рублей (style_rub), параметры копеек (style_kop): -1 –не отображать, 0-название с валютой (рубли или копейки), 1-цифрой с валютой, 2-название без валюты, 3 цифрой без валюты.
function PolarNotch(var X,Y:double;const x1,y1,x2,y2:double;const ug,dl:double):boolean Вычисляет полярную засечку. Стоим на точке (x1,y1), ориентир на точку (x2,y2), угол (ug), длина линии (dl). Возвращает результат (X,Y). Результат true - результат вычислен.
function LinearNotch(var X,Y:extended; x1,y1,x2,y2:double;const dl1,dl2:double; other:boolean=false):boolean Вычисляет линейную засечку. От 1 точки (x1,y1) длина (dl1), 2 точка (x2,y2) длина (dl2). Возвращает точку пересечения (X,Y). Для нахождения другой точки (others). Результат true - результат вычислен.
function CrossingLines(var X,Y:extended;const x1,y1,x2,y2,x3,y3,x4,y4:extended):boolean; Вычисляет пересечение двух линий (x1,y1)-(x2,y2) и (x3,y3)-(x4,y4). Возвращает точку пересечения (X,Y). Результат true - результат вычислен.
function ExecuteFile(FileName:string; Params:string=''; DefaultDir:string=''; ShowCmd:Integer=1):boolean
Открывает файл внешней программой (папка, URL)
fucntion ExecuteEmail(EMail:string):boolean
Отрывает указанный e-mail
procedure LoadFromFile(FileName:string; window_id:string=''; type_add:integer=0)
Загружает файл в окно. FileName - путь к файлу, Window_id - идентификатор окна, type_add - тип добавления: 0 - по умолчанию, 1-перед загрузкой очистить, 2-слить с существующим.
procedure SaveToFile(FileName:string; window_id:string='')
Сохранение файла. FileName - путь к файлу, Window_id - идентификатор окна из которого будет сохраняться.
function PointInLine(t1, t2:TGZM_PointC; kx,ky:double; delta:double):integer
Определение попадания точки с координатами (kx, ky) на линию (t1 - t2), результат: 0-попадает, 1-снаружи, 2-внутри, 3-соприкасается, 4-пересекает, 5-совпадение с вершиной
function PointInPolygon(p:TGZM_PolygonPoints; kx,ky:double):integer
Определение попадания точки с координатами (kx, ky) в полигон (p), результат: 1-снаружи, 2-внутри, 3-соприкасается, 4-пересекает, 5-совпадение с вершиной
function PolygonInPolygon(p1,p2:TGZM_PolygonPoints):integer
Определение наложения полигонов (p1, p2), результат: 1-снаружи, 2-внутри, 3-соприкасается, 4-пересекает, 5-совпадение с вершиной
function PolygonMerge(p1,p2:TGZM_PolygonPoints; TypMerge:byte=4; mdel:byte=3; TypCopy:byte=3):boolean

Пересечение полигонов (p1, p2),
TypMerge - тип пересечения:
0- только общие области
1- первый без второго
2- второй без первого
3- точки пересечения
4- объединение обоих
5- разбить второй первым
mdel - метка удаление исходных: 0-без, 1-первый, 2- второй, 3 -оба
TypCopy - перенос данных: 0-по умолчанию, 1-из первого, 2-из второго, 3-где были старые

function ShortFileName(const Dir, FileName:string):string
Возвращает короткое имя файла относительно каталога
function FullFileName(const Dir, FileName:string):string
Возвращает полное имя файла из короткого относительно каталога
function FileExists(const FileName:String): Boolean
Проверка на существование файла
function ChangeFileExt(const FileName, Extension: string ):string
Изменить расширение у файла
function ExtractFileExt(const FileName:string ):string
Возвращает расширение файла
function ExtractFileName(const FileName:string ):string
Возвращает имя файла без имени диска и каталогов, извлекая его из полного имени файла
function ExtractFileDrive(const FileName:string ):string
Возвращает имя диска, извлеченное из полного имени файла FileName
function ExtractFileDir(const FileName:string ):string
Извлекает из полного имени файла FileName полное имя каталога, в котором находится указанный файл
function ExtractFilePath(const FileName: string ):string
Возвращает путь к файлу, извлекая его из полного имени файла FileName

Некоторые функции FastReport

STR(n: Integer): String Преобразует число (n) в строку
COPY(s: String; n1,n2: Integer):String Возвращает подстроку из строки (s) начиная с номера (n1), длиной (n2)
LENGTH(s: String): Integer Возвращает длину строки (s)
UPPER(s: String): String Возвращает строку (s), где все буквы заглавные
IF(b: Boolean; v1,v2:Variant): Variant Возвращает значение v1, если условие (b) истинно; иначе возвращает значение v2
FORMATFLOAT(format: String; n: Double): String

Преобразует числовое значение (n) в строку, используя форматирование (format).

Описание спецификаторов форматирования format:

0: Определяет поле для цифры. Если в данной позиции форматируемое число имеет значащую цифру, она выводится, если нет – выводится 0.

#: Определяет поле для цифры. Если в данной позиции форматируемое число имеет значащую цифру, она выводится, ели нет – ничего не выводится

.: Поле для разделителя целой и дробной частей числа

INT(n: Double): Integer Возвращает целую часть числа (n)
FRAC(n: Double): Double Возвращает дробную часть числа (n)

ROUND(n: Double): Double

Возвращает округленное значение (n)

(n1: DoubleMODn2:Double): Integer

Возвращает остаток от деления n1 на n2

POS(s1: String; s2: String): Integer

Возвращает начало вхождения строки s1 в строке s2.

SQRT(x: Double):Double

Возвращает квадратный корень из числа x

ABS(x: Double):Double

Возвращает абсолютное число x

Десятичное значение угла означает, что в целой части числа находится значение угла, в дробной – значения минут, секунд как десятичная часть одного угла. Т.е. значение 1.5 равно 1 градус, 30 минут, 0 секунд.

Нахождение значений градуса (g), минут (m), секунд (s):

//находим градус

g=Int(ug)

//минуты

m=Int(Frac(ug)*60));

//секунды

s=Int(Frac((ug-g-m/60)*60)*60));

Нахождение десятичного значения угла (ug) по известным значениям градуса (g), минут (m), секунд (s):

ug=g+(m+s/60)/60;

Пример:

Пусть в имени файла закодирован кадастровый номер в формате: <код блока>_<номер квартала>-<номер участка>.<расширение файла>. Нужно найти полный кадастровый номер.

имяф=ExtractFileName([файл])
kn1=pos("_",[имяф])
kn2=pos("-",[имяф])
kn3=pos(".",[имяф])
kod3n=copy([имяф],1,[kn1]-1)
kod31=copy([имяф],[kn1]+1,[kn2]-[kn1]-1)
kod0=copy([имяф],[kn2]+1,[kn3]-[kn2]-1)
;Находим кадастровый номер
кадастровый_номер="00:00:"+formatfloat("000",[kod3n])+" 00 "+formatfloat("00",[kod31])+":"+formatfloat("0000",[kod0])

Свойства объектов

Название свойства Тип Назначение Примечание
Общие для всех объектов

ot

boolean

Признак выделения

Только чтение

nz

boolean

Признак показа подписи

Только чтение

nztxt

string

Строка подписи

Только чтение

vid

boolean

Признак видимости объекта

style

word

Стиль объекта через вычисление в парсере

oldstyle

word

Стиль объекта без вычисления в парсере

Только чтение

color

integer

Цвет объекта через вычисление в парсере

oldcolor

integer

Цвет объекта без вычисления в парсере

Только чтение

width

double

Толщина (размер) объекта через вычисление в парсере

oldwidth

double

Толщина (размер) объекта без вычисления в парсере

Только чтение

name

string

Подпись через вычисление в парсере

oldname

string

Подпись без вычисления в парсере

Только чтение

nomer

integer

Порядковый номер объекта

Только чтение

uobz

integer

Номер условного обозначения для данного типа объекта

tab.

Ссылка

Доступ к данным таблицы (пример: [tab.id]).

MinX

double

Минимальная координата объекта по X

Только чтение

MinY

Double

Минимальная координата объекта по Y

Только чтение

MaxX

Double

Максимальная координата объекта по X

Только чтение

MaxY

Double

Максимальная координата объекта по Y

Только чтение

CenX

Double

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

Только чтение

CenY

Double

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

Только чтение

RazX

Double

Размер объекта по X

Только чтение

RazY

Double

Размер объекта по Y

Только чтение

this_obj TGZM_BasEl Ссылка на текущий объект Только чтение

Точки

X

Double

Координата X

Только чтение

Y

Double

Координата Y

Только чтение

Линии

dln

double

Длина линии

Только чтение

ugl

String

Дирекционный угол линии (строка)

Только чтение

dirug

Double

Дирекционный угол линии (десятичное значение угла)

Только чтение

t1.

Ссылка на объект

Доступ к свойствам 1 точки линии (пример: [t1.style]).

t2.

Ссылка на объект

Доступ к свойствам 2 точки линии (пример: [t2.style]).

Полигоны

kadkwart

Word

Номер кадастрового квартала

Только чтение

kadnomer

Word

Номер участка в квартале

Только чтение

plh

Double

Площадь

Только чтение

per

Double

Периметр

Только чтение

stylez

Word

Стиль заливки через вычисление в парсере

oldstylez

Word

Стиль заливки без вычисления в парсере

Только чтение

colorz

Integer

Цвет заливки через вычисление в парсере

oldcolorz

Integer

Цвет заливки без вычисления в парсере

Только чтение

Count

Integer

Количество точек в полигоне

Только чтение

Obrah

Boolean

Порядок обхода точек, True-по часовой, False- против часовой стрелки

Только чтение

[n].

Ссылка на объект

Доступ к свойствам точки полигона (n-порядковый номер точки)

nameug

string

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

Точки в полигонах

Nt

Integer

Номер точки

Ugl

Double

Значение внутреннего угла полигона в точке (десятичное значение)

Только чтение

Тексты

x

Double

Координата X начала текста (левый верхний угол)

Только чтение

y

Double

Координата Y начала текста (левый верхний угол)

Только чтение

sltxt

String

Строка текста (дублируется свойством Nztxt)

Только чтение

height

Double

Высота символа в метрах через вычисление в парсере

oldheight

Double

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

Только чтение

angle

Double

Угол поворота текста

Только чтение

spacing

Byte

Межстрочное расстояние строк в тексте

Только чтение

justify

Byte

Выравнивание текста

Только чтение

colorf

Integer

Цвет фона

typf

Byte

Тип фона (0-прозрачный, 1-цветной)

fnt.name

String

Имя шрифта

Только чтение

fnt.color

Integer

Цвет шрифта (дублируется свойством Color)

Только чтение

fnt.size

Byte

Размер шрифта в пунктах

Только чтение

fnt.style

Byte

Стиль шрифта

Только чтение

fnt.charset

Byte

Набор символов шрифта (1-по умолчанию, 204- русский)

Только чтение

Общие для всех списков объектов

Count

Integer

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

Только чтение

MinX

double

Минимальная координата объектов списка по X

Только чтение

MinY

Double

Минимальная координата объектов списка по Y

Только чтение

MaxX

Double

Максимальная координата объектов списка по X

Только чтение

MaxY

Double

Максимальная координата объектов списка по Y

Только чтение

CenX

Double

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

Только чтение

CenY

Double

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

Только чтение

RazX

Double

Размер объектов по X

Только чтение

RazY

Double

Размер объектов по Y

Только чтение

Свойства списка смежников

Nomer

Integer

Порядковый номер смежника (для выбранного полигона)

Только чтение

Nt1

String

Название начальной точки границы смежника

Только чтение

Nt2

String

Название конечной точки границы смежника

Только чтение

Np

String

Название смежного полигона

Только чтение

Obj.nt1

Integer

Номер начальной точки границы смежника

Только чтение

Obj.nt2

Integer

Номер конечной точки границы смежника

Только чтение

Obj.np

Integer

Номер смежного полигона

Только чтение

First_np

Integer

Порядковый номер полигона, для которого создан список смежников.

Только чтение

Kadnom

String

Строка кадастрового номера, который введен на первой закладке.

Только чтение

Count

Integer

Количество смежников для выбранного полигона.

Только чтение

List

String

Возвращает список смежников (многострочная строка).

Только чтение

[<номер>].<имя>

Ссылка

Доступ к свойству смежника из списка по номеру.

Только чтение

Для объектов можно изменять свойства через выражения.

Для установки подписи объекта следует писать: "name="+выражение. Используется только для оформления.

Для установки цвета следует писать: "color="+выражение.

Для установки толщины линий следует писать: "width="+выражение.

Для установки стиля следует писать: "style="+выражение.

Для установки видимости объекта следует писать: "vid="+выражение. Используется только для оформления.

Для установки типа условного обозначения следует писать: "uobz="+выражение.

Для установки стиля типа фона полигона следует писать: "typf="+выражение.

Для установки цвета фона полигона следует писать: "colorf="+выражение.

Для установки стиля заливки полигона следует писать: "stylez="+выражение.

Для установки цвета заливки полигона следует писать: "colorz="+выражение.

Для установки подписи угла полигона следует писать: "nameug="+выражение. Используется только для оформления.

Для установки размера высоты текста следует писать: "height="+выражение.

Для установки поля таблицы следует писать: "tab.название поля="+выражение

Для установки геолинка следует писать: "on_link="+выражение

on_link=CallFunction('geolinks.geolink_text',[this_obj])

Также допустимо использовать установку своих переменных, значение которых используются в выражениях

Есть возможность задать функцию скрипта, которая будет выполняться для вычисления свойства:

Формат установки: name=CallFunction('Func_name',[this_obj])

Формат функции: function Func_name(obj:TGZM_BasEl):string; - функция возвращает строку, в параметр поступает ссылка на одиночный графический объект.

Для обозначения цвета используются значения:

Цвет Значение

Черный

0

Темно-красный

128

Темно-зеленый

32768

Коричневый

32896

Темно-синий

8388608

Пурпурный

8388736

Голубой

8421376

Темно-серый

8421504

Светло-серый

12632256

Красный

255

Зеленый

65280

Желтый

65535

Синий

16711680

Малиновый

16711935

Светло-голубой

16776960

Белый

16777215

Также значение цвета можно вычислить по формуле: [кол-во синего]*65536+[кол-во зеленого]*256+[кол-во красного],

где [кол-во синего], [кол-во зеленого], [кол-во красного] – числа от 0 до 255, отвечают за яркость соответствующего цвета.

Таким образом можно задать до 16777215 цветов.

Для обозначения стиля используются значения, которое вычисляемся по формуле: "номер_группы"*256+"номер_стиля_в_ группе".

Группа номер 0 отведена под стандартные стили и не могут переопределяться:

-для точек – код 0.

-для линий – коды от 0 до 4.

-для полигонов – коды от 0 до 7.

Пример:

файл с пользовательским стилем называется "lin_1_1.bmp" – номер группы=1, номер стиля в группе=1, значение кода стиля равно: 1*256+1=257.

Использование выражений при импорте/экспорте в формат MIF/MID

Здесь тоже самое, как и в предыдущем описании.

Для доступа к полям таблицы MIF, применяется названия переменных (перед знаком "="):

Для точечных объектов:

TABTOS.<название поля>

Для линий:

TABLIN.<название поля>

Для полигонов:

TABPOL.<название поля>

Для текстов:

TABTXT.<название поля>

Для доступа к данным Geozem применяется названия переменных:

Для точек:

tos.<имя свойства>

Для линий:

lin.<имя свойства>

Для полигонов:

pol.<имя свойства>

Для тектов:

txt.<имя свойства>

Для доступа к таблицам Geozem:

Tos.tab.<имя поля>

Lin.tab.<имя поля>

Pol.tab.<имя поля>

Txt.<имя поля>

Доступны все свойства данных объектов, которые описаны ранее.

После знака "=" писать следует просто <имя свойства> или <название поля>

Пример:

Для полного копирования данных Geozem (копирование стилей, названий, признака отметки, разрешения написания названия), можно создать такую привязку.

Описание таблицы:

KW INTEGER
KN INTEGER
NZ LOGICAL
OT LOGICAL
NZTXT CHAR(25)
UOBZ INTEGER

Выражения:

TABPOL.NZ=[nz]
TABPOL.NZTXT=[nztxt]
TABPOL.UOBZ=[uobz]
pol.kadkwart=[KW]
pol.kadnomer=[KN]
pol.nz=[NZ]
pol.nztxt=[NZTXT]
pol.uobz=[UOBZ]
TABTOS.NZ=[nz]
TABLIN.NZ=[nz]
TABTOS.OT=[ot]
TABTOS.NZTXT=[nztxt]
TABTOS.UOBZ=[uobz]
TABLIN.NZTXT=[nztxt]
TABLIN.UOBZ=[uobz]
TABTOS.KW=0
TABLIN.KW=0
TABTOS.KN=0
TABLIN.KN=0
tos.ot=[OT]
tos.nz=[NZ]
tos.nztxt=[NZTXT]
tos.uobz=[UOBZ]
lin.nz=[NZ]
lin.nztxt=[NZTXT]
lin.uobz=[UOBZ]
TABLIN.OT=0
TABPOL.OT=0
TABPOL.KW=[kadkwart]
TABPOL.KN=[kadnomer]

Функции в выражениях

Название функции, типы параметров Назначение

SQRT(x: Double):Double

Возвращает квадратный корень из числа x

ABS(x: Double):Double

Возвращает абсолютное число x

UGLSTR(n: Double): String

Возвращает угол в виде строки ГГГ°ММ"CC", параметр n-десятичное значение угла.

UGLRUMB(n: Double): String

Возвращает угол в виде румба, параметр n-десятичное значение угла.

LEFTUGL(n: Double): Double

Преобразование десятичного угла (n) из правого в левый и наоборот.

STR(n: Integer): String

Преобразует число (n) в строку

COPY(s: String; n1,n2: Integer):String

Возвращает подстроку из строки (s) начиная с номера (n1), длиной (n2)

LENGTH(s: String): Integer

Возвращает длину строки (s)

POS(s1: String; s2: String): Integer

Возвращает начало вхождения строки s1 в строке s2.

UPPER(s: String): String

Возвращает строку (s), где все буквы заглавные

IF(b: Boolean; v1,v2:Variant): Variant

Возвращает значение v1, если условие (b) истинно; иначе возвращает значение v2

FORMATFLOAT(format: String; n: Double): String

Преобразует числовое значение (n) в строку, используя форматирование (format).

Описание спецификаторов форматирования format:

0: Определяет поле для цифры. Если в данной позиции форматируемое число имеет значащую цифру, она выводится, если нет – выводится 0.

#: Определяет поле для цифры. Если в данной позиции форматируемое число имеет значащую цифру, она выводится, ели нет – ничего не выводится

.: Поле для разделителя целой и дробной частей числа

INT(n: Double): Integer

Возвращает целую часть числа (n)

FRAC(n: Double): Double

Возвращает целую часть числа (n)

ROUND(n: Double): Double

Возвращает округленное значение (n)

(n1: DoubleMODn2:Double): Integer

Возвращает остаток от деления n1 на n2

SELECT(name: String; s: String): String

Возвращает результат SQL-запроса (s) к базе данных (name – имя базы данных). Подробнее…

SQL(name: String; s: String)

Выполняет произвольный SQL-запрос (s) к базе данных (name – имя базы данных). Подробнее…

ConnectionString(name: String; login: Boolean)

Возвращает строку подключения из настроенных баз данных (name – имя базы данных). Подробнее…

GetSpisokID(idstr:string):integer

Вернуть номер списка по идентификатору (idstr). Если не найдено, возвращает -1.

   

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

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

Примеры написания выражений:

Точки

Name="н"+STR([nomer])

н100

Добавляется буква "н" к порядковому номеру точки

Name=STR([nomer]+10)

110

К порядковому номеру точки прибавляется число 10

style=IF([n],IF([nz]<0,256,0),257)

n=([nztxt]="")

Установка точки стиля

tab.name="Имя"

Установка полю NAME в таблице значение "Имя"

Линии

name=FormatFloat("0.##",[dln])+" / "+[ugl]

10.2 / 196°04"

Пишется значение длины и дирекционный угол

n=(([t1.style]=257)and([t2.style]=257)) or(([t1.style]=0)or([t2.style]=0))

style=IF([n],0,2)

Установка стиля линии

tab.name="Имя"

Установка полю NAME в таблице значение "Имя"

Полигоны

Name=IF([kadnomer]=0, "#"+str([nomer]), FormatFloat("00",[kadkwart])+ ":" +FormatFloat("000",[kadnomer]))

#1

Если нет кадастрового номера то пишется знак "#" и порядковый номер полигона

01:005

Если есть кадастровый номер, то пишется два знака на номер квартала, три знака на номер участка

Name=IF([kadkwart]=10,"Ж", IF([kadkwart]=11,"Н", IF([kadnomer]=0, "#"+str([nomer]), FormatFloat("00",[kadkwart]) + ":" + FormatFloat("000",[kadnomer]))))

Ж

Н

#1

01:005

Если номер квартала равен 10, то пишется "Ж"

Если номер квартала равен 11, то пишется "Н"

name=IF(([kadnomer]=0),[S1], IF(([kadkwart]=0),[S3],[S2]))

S1="#"+str([nomer])

S2=FormatFloat("0",[kadkwart])+":"+FormatFloat("0",[kadnomer])

S3="1:"+FormatFloat("0",[kadnomer])

Style=2

Stylez=2

Установка стиля

tab.name="Имя"

Установка полю NAME в таблице значение "Имя"

nameug=UglStr([ugl])

Установка подписи углов полигонов как значение строки внутреннего угла