Смекни!
smekni.com

MapInfo Professional 90 Руководство пользователя (стр. 109 из 125)

Например:

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

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

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

• В настройке слоя выражения используются для подписей.

выражения можно разделить на две группы:

• выражения, в результате вычисления которых получается логическая величина (TRUE или FALSE)

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

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

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

Создание выражений в запросах

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

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

1. POP_1990

2. STATE

Вы можете использовать такое выражение при построение тематических Карт, чтобы показать какая переменная отображается на Карте. В команде Обновить колонку такое выражение будет указывать MapInfo Professional какие данные используются при обновлении колонки.

Теперь несколько более сложных примеров выражений:

3. POP_1990 > 17893

4. POP_1990 <= POP_1980

5. COUNTY <> "Orange"

6. POP_1980 * 1.2

7. POP_1990 / TOTAL_AREA

8. round(POP_1990/TOTAL_AREA,.1)

Первые три примера используют операторы сравнения. Первое выражение представляет собой условие в котором население за 1990 должно быть больше чем (>) некоторая константа (17893). Второе отбирает записи в которых значение одной колонки POP_1990, меньше чем или равно (<=) значению в другой колонке POP_1980. Третье проверяет, это графство Orange или нет. И если это не искомое графство, т.е. не равно (<>) "Orange" запись выбирается. Вы можете использовать любое из этих выражений в командах Выбрать или SQL-запрос, в поле С условием. Эти команды позволяют Вам сделать выборку требуемых записей из таблицы. Выражение как раз и определяет, что попадёт в выборку.

Примеры 6 и 7 используют арифметические операторы. Пример 6 умножает (*) значение POP_1980 на константу (1.2), а пример 7 делит одну колонку POP_1990 на другую AREA.

В примере 8 используется функция округления, для округления значения выражения "POP_ 1990/TOTAL_AREA" до одной десятой (.1).

выражения 6, 7 и 8 не имеют операторов сравнения, следовательно они не могут быть использованы как условие в командах Выбрать или SQL-запрос. Однако, можно использовать их самостоятельно при создании тематических Карт операции Обновить колонку или для создания вычисляемых колонок в SQL-запросе.

Задание условия для фильтрации данных в выражении

Фильтрация - это формирование запроса с условием, заданным логическим выражением, которое обычно сравнивает значение колонки с другой величиной. Например, в SQL-запросе будут рассматриваться только те строки, которые имеют в колонке "Количество" значение больше ста:

с условием: Количество > 100

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

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

В окошке с условием могут быть использованы любые колонки из исходных таблиц, включая те которые указаны в окошке "Выбрать колонки".

Колонки в условии могут задаваться именами и номером в списке из окошка Выбрать колонки. Номер колонки пишется после букв "col". Например, "coll" или "col6" - первая или шестая колонка таблицы запроса. Перед числом необходимо вставлять буквы "col".

• Более подробные инструкции и смежные темы ищите в разделе Справочной системы: "Создание временных колонок при помощи выражений".

Математические операторы в выражениях

В некоторых диалогах MapInfo есть возможность вызвать диалог "выражение" для составления выражений. Математические операторы часто используются в выражениях. Следующая таблица представляет символы операторов, имена, примеры и правила преобразование типов значений.

Символ Описание Пример Подробнее о примере
+ сложение A + B Дата + число: Дата 01.04.06 + 4: 05.04.06 Вещественное Число + дата: Дата 4 + 232: 236
вычитание A - B (вычитание) -A (отрицательное) Дата - число: Дата Число - дата: Дата 236 - 4: 232 любое число - любое число: Вещественное
* умножение A * B любое число *любое число: Целое любое число * любое число: Вещественное
/ деление A / B любое число / любое число:
вещественное число
Л возведение в со < < любое число Л любое число:
степень вещественное число

Разрешаются следующие виды вычислений:

• сложение чисел с датами с получением новой даты

• вычитание чисел из дат с получением новой даты

• вычитание даты из даты с получением числа

При прибавлении чисел к датам или вычитании чисел из дат, MapInfo считает число, определённым количеством дней. Так, для вычитания или прибавления недели надо использовать число 7, а для вычитания или прибавления месяца - числа 30 или 31. При вычитании даты из даты результатом в MapInfo Professional будет количество дней.

Использование строковых операторов в выражениях

+ "конкатенация" - объединение строк и строковых выражений.
& (может использоваться если предваряется пробелом)

Строки должны быть заключены в двойные кавычки. Рассмотрим следующий пример:

"Господин " + Last_Name

MapInfo Professional оценивает это как часть выражения и помещает "Господин перед каждой фамилией. Обратите внимание, что строковая константа ("Господин ") заключена в кавычки. Аналогично,

"Здравствуй, " + "мир." дает "Здравствуй, мир.".

"4"+"5" даёт "45."

Использование операторов сравнения в выражениях

В некоторых диалогах MapInfo есть возможность вызвать диалог выражение для составления математических и алфавитно-цифровых выражений формул. В выражениях часто используются операторы сравнения. В следующей таблице приводятся знаки для операторов сравнения и их описание.

Операторы Описание
= "равенство "
<> "неравенство "
> "больше"
< "меньше"
>= "больше или равно"
<= "меньше или равно"

В Справочной системе содержатся следующие разделы:

• Сравнение чисел

• Сравнение строк

• Сравнение дат

• Логическое сравнение

Географические операторы в выражениях

В MapInfo Professional имеется несколько географических операторов. Они используются для выбора объектов на основании их взаимного расположения в пространстве. С географическими операторами в MapInfo Professional используется специальное зарезервированное слово: "obj" или "object". Оно определяет, что MapInfo Professional должно вычислить значение на основании графических объектов, а не соответствующих им табличных данных.

Имя географического оператора указывается между географическими объектами. Выбрать его можно в списке Операторы в диалоге SQL-запрос. ниже перечислены географические операторы:

Contains (содержит) Объект A содержит объект В, если центроид объекта В лежит в границах объекта A.
Contains Entire (полностью содержит) Объект A полностью содержит объект В, если границы объекта В полностью лежат внутри границ объекта A.
Contains Part (частично содержит) Объект A частично содержит объект В, если границы объекта В частично лежат внутри границ объекта A.
Within (внутри) Объект A находится внутри объекта В, если его центроид находится в границах объекта В.
Entirely Within (полностью внутри) Объект A находится полностью внутри объекта В, если его граница полностью находится внутри границ объекта В.
Partly Within (частично внутри) Объект A частично находится внутри объекта В, если его граница частично находится внутри границ объекта В.
Intersects (пересекает) Объект A пересекается с объектом В, если они имеют хотя бы одну общую точку.

"Contains Part" и "Partly Within" эквивалентно "Intersects" - они одинаково трактуются в MapInfo Professional, поэтому синтаксис "Intersects" универсальный.

"Contains" и "Within" имеют дело с центроидами.

"Contains Entire" и "Entirely Within" имеют дело с границами и не затрагивают центроиды. Примеры: