Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

4103

.pdf
Скачиваний:
2
Добавлен:
08.01.2021
Размер:
786.29 Кб
Скачать

11

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

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

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

Таблица 1

Математические операторы

 

Знак

 

Операция

Пример записи

 

 

+

 

Сложение

А + В

 

 

 

Вычитание

А – В

 

 

*

 

Умножение

А * В

 

 

/

 

Деление

А / В

 

 

^

 

Возведение в степень

А ^ В

 

 

 

 

 

Таблица 2

 

 

Функции над графическими объектами

Функция

 

Назначение

Area (obj, str)

 

Вычисляет площадь объекта obj. Параметр str задает

 

 

 

единицы измерения площади, например "sq mi" или

 

 

 

"sq km".

 

 

CentroidX (obj)

 

Определяет координату Х центроида объекта.

CentroidY (obj)

 

Определяет координату Y центроида объекта.

Distance (x1, y1,

 

Вычисляет расстояние между двумя точками.

x2, y2, str)

 

Первые два параметра задают координаты Х и Y

 

 

 

начальной точки, а следующие два – конечной точки.

 

 

 

Параметр str задает название единицы измерения,

 

 

 

например "mi" или "km".

 

 

Perimeter (obj, str)

 

Вычисляет периметр объекта. Параметр str задает

 

 

 

единицу измерения расстояния "mi" или "km".

ObjectLen(obj,str)

 

Определяет длину объекта. Параметр str задает

 

 

 

единицы измерения. Функция применима к объектам

 

 

 

типа "дуга", "линия" и "полилиния".

12

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

Упражнение 3.

Для таблицы Кварталы создайте поля для вычисления площади и периметра квартала, выполнив следующее:

1Откройте таблицу Кварталы и для нее окно Списка.

2Выполните команду Запрос SQL-запрос. Появится диалоговое окно создания SQL-запроса (рис. 5). Заполните его следующим образом:

9 Поместите курсор в поле из таблиц и из выпадающего списка Таблицы выберите Кварталы. Также надо указать, какие еще таблицы будут использованы в SQL-запросе. В данном примере используется только одна таблица – Кварталы. Вообще же могут использоваться две, три и более таблиц. Секцию из таблиц надо заполнять перед заполнением секции Выбрать колонки. На основании содержимого секции из таблиц MapInfo создает список колонок, которые можно упоминать в поле Выбрать колонки.

Рис. 5 Диалоговое окно SQL-запрос

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

13

поля ID поставьте запятую и запишите функцию, вычисляющую периметр объектов: Perimeter (obj, "km").

При создании вычисляемой колонки MapInfo использует выражение в качестве названия колонки. Оно может быть неудобочитаемым, поэтому можно задать свое название колонки. Чтобы переименовать колонку, добавьте свое название в секцию Выбрать колонки при перечислении используемых колонок. Это название должно следовать сразу после вычисляемого выражения, отделяться от него пробелом и быть заключено в двойные кавычки. Т.е. в секцию Выбрать колонки должно быть записано ID, Perimeter (obj, "km") "Периметр".

9 Используя функцию вычисления площади графического объекта

Area(obj, "hectare") добавьте поле Площадь в секцию Выбрать колонки.

9 Находясь в секции и поместить в таблицу, задайте имя ОписаниеКвартала создаваемому запросу.

9 Проверьте, что установлен флажок Результат в Список.

3Нажмите на кнопку Проверить. MapInfo проверит синтаксическую правильность предложений SQL-запроса. Если будут обнаружены ошибки, MapInfo выдаст сообщение: какого типа ошибка, и в каком случае она допущена.

4Нажмите OK. MapInfo создаст таблицу, представленную на рис. 6.

5Выполните команду Файл Сохранить запрос и, таким образом, запрос сохранится в виде таблицы. Когда будете открывать эту таблицу, автоматически будут открыты таблицы, на основе которых построен данный запрос, и далее этот запрос выполняется.

6Для закрытия всех таблиц выполните команду Файл Закрыть все, при этом сохранив измененные таблицы.

Рис. 6 Окно Списка таблицы ОписаниеКвартала

Упражнение 4.

1Откройте таблицу Выделы и для нее окно Списка.

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

3Закройте все таблицы.

14

Вопросы для самопроверки

1Расскажите основные принципы работы с окном Списка в MapInfo?

2Как изменить структуру уже созданной таблицы?

3Перечислите функции, вычисляющие параметры географических объектов?

4Что такое вычисляемое поле и как его создать?

ЛАБОРАТОРНАЯ РАБОТА № 5

Тема работы: Построение запросов и отчетов к таблицам MapInfo.

Формирование запросов к таблицам базы данных в MapInfo

Выделение объектов по какому-либо критерию осуществляется на основе поиска в базе данных записей, удовлетворяющих заданному условию или условиям. Задание на такой поиск данных называется запросом. Запрос формулируется посредством языка общения пользователя с СУБД. В процессе выполнения запроса возможно выполнение дополнительных операций, например, сортировка данных, суммирование, осреднение и т.п.

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

9 запрос на выборку записей, удовлетворяющих некоторому критерию. Прямой запрос или запрос "по шаблону" позволяет быстро и легко получить необходимые данные, если знать точные значения полей, по которым выполняется запрос. Чтобы получить определенную часть из всех имеющихся данных, служит функция выборочного запроса. Здесь можно целенаправленно определить, какие массивы данных следует выбрать, а какие – нет;

9 создавать вычисляемые поля – поля, значения в которых вычисляются на основании значений уже существующих полей (столбцах);

9 комбинировать две или более таблицы в одну новую таблицу; 9 отображать только те столбцы и строки, которые интересуют

пользователя.

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

Посредством критериев отбора пользователь указывает СУБД, какие записи нужно выбирать из таблиц и отображать в таблице результатов

15

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

К операторам сравнения относятся:

=

равно

<>

не равно

>

больше

>=

больше или равно

<

меньше

<=

меньше или равно

LIKE

– позволяет

построить условие сравнения по шаблону, где

символ "_" указывает единичный неопределенный символ в строке, "%" – любое их количество. Формат оператора:

<колонка> LIKE <шаблон>

Например, таблица Кварталы включает в себя следующие поля:

Площадь; Преобладающая порода; Бонитет; Категория защитности и т.д. Для поля Преобладающая порода таблицы Кварталы можно

сформировать условия:

Преобладающая порода Like "Сосна %" – отобрать все записи, которые содержат в названии преобладающей породы слово Сосна. Результатом запроса будет: Сосна кедровая, Сосна обыкновенная и т.д.

Преобладающая порода Like "О%" – отобрать все записи, которые содержат название преобладающей породы, начинающееся с буквы О. Результатом запроса будет: Осина, Ольха серая и т.д.

Более сложные выражения строятся с помощью логических операторов: AND (логическое И), OR (ИЛИ) и NOT (НЕ). Логические операции выполняются в соответствии с приведенной ниже таблицей истинности (табл. 3).

 

Таблица истинности логических операций

Таблица 3

 

 

A

B

NOT A

A AND B

A OR B

ИСТИНА

ИСТИНА

ЛОЖЬ

ИСТИНА

ИСТИНА

ИСТИНА

ЛОЖЬ

ЛОЖЬ

ЛОЖЬ

ИСТИНА

ЛОЖЬ

ИСТИНА

ИСТИНА

ЛОЖЬ

ИСТИНА

ЛОЖЬ

ЛОЖЬ

ИСТИНА

ЛОЖЬ

ЛОЖЬ

Выражение NOT A принимает значение ИСТИНА, если аргумент имеет значение ЛОЖЬ и наоборот, т.е. чтобы попасть в результат запроса запись не должна удовлетворять условию.

Выражение A AND B принимает значение ИСТИНА только в том случае, если оба ее аргумента (логических выражения) истинны, т.е. запись базы данных должна удовлетворять обоим условиям, чтобы попасть в выборку.

16

Выражение A OR B принимает значение ИСТИНА, если хотя бы один из аргументов имеет значение ИСТИНА, т.е. запись должна удовлетворять хотя бы одному из условий, чтобы попасть в выборку.

Например:

Порода Not Like "Сосна %" – отобрать все записи, которые не содержат в названии породы слово Сосна.

Порода = "Сосна" AND Запас >= 150 – отобрать выделы с преобладающей породой Сосна с запасом более 150 м3 на га;

Порода = "Ель" OR Порода = "Сосна" – отобрать все записи, которые имеют породу Ель или Сосна.

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

Таблица 4

Приоритеты операторов в выражениях

Высший приоритет

Скобки

 

Возведение в степень

 

Умножение, деление

 

Сложение, вычитание

 

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

 

NOT

 

AND

Низший приоритет

OR

Упражнение 1.

1Запустите MapInfo. В появившемся диалоговом окне Открыть сразу нажмите кнопку Отмена.

2Выполните команду Файл Открыть рабочий набор. В

появившемся диалоговом окне выберите Планшет и нажмите кнопку Открыть. На экране появится план лесничества, представленный на рис. 7 и

состоящий из следующих слоев: Рамка, Семантика, Лесные дороги, Узкие просеки, Гидрография, Сельхоз, Кв.просеки, Визиры, Лесные дороги и зимник, Ситуация и Выделы.

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

D:/Примеры для Leshoz4/Планшет/.

17

Рис. 7 Планшет в MapInfo

3 Используя команду меню Файл Открыть таблицу, откройте таблицы Категории земель, Лесохозяйственные мероприятия, Состав и ХозМероприятия. К данным таблицам не присоединены изображения в окне Карты, т.к. они является составными атрибутами объекта Выделы (рис. 8).

Тип связи между таблицами Выделы и Состав породы – "Один ко многим" (1:N) – обеспечивается соответствием ключевого поля ГИСидентификатор таблицы Выделы полю внешнего ключа ГИСидентификатор таблицы Состав. Аналогично поле внешнего ключа КатегорияЗемель таблицы Выделы сопоставлено ключевому полю Код таблицы Категории земель, что позволяет избежать повторного описания атрибутов выделов и сокращает объем неопределенных значений для атрибута Категория земель. Таким же образом обеспечиваются связи между таблицами Выделы и ХозМероприятия, Лесохозяйственные мероприятия и ХозМероприятия.

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

18

Рис. 8 Реляционная модель базы данных "Планшет"

Выбор объектов по значениям их атрибутов

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

Сохранить копию.

Упражнение 2.

Найдите на карте выделы, входящие в состав первого квартала, выполнив следующее:

1 Вызовите команду Запрос Выбрать. На экране появится диалоговое окно, представленное на рис. 9.

19

Рис. 9 Диалоговое окно команды Выбрать

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

Рис. 10 Диалоговое окно для создания выражений

3 Для создания выражения:

9 в списке Колонки, содержащем название всех полей таблицы, в которой будет производиться поиск, выберите поле НомерКвартала;

9 в списке Операторы, содержащем перечень математических и логических операторов, выберите знак равенства (=);

9 после знака равенства введите 1.

Для проверки правильности ввода выражения нажмите кнопку Проверить. Если ошибок нет, то будет выдано соответствующее сообщение. Полностью выражение должно выглядеть следующим образом:

НомерКвартала = 1.

20

4Нажмите кнопку ОК для возвращения к окну Выбрать.

5В поле Результат в таблицу должно быть записано Selection, в поле

Упорядочить по колонке – выбрана колонка НомерВыдела, а в поле Результат в Список стоять флажок.

6Установив необходимые параметры, в окне Выбрать нажмите кнопку ОК. На экране появится окно списка Query1 Список и в окне Карты будут выбраны изображения выделов, составляющих первый квартал.

7Закройте окно Query1 Список без сохранения.

Команда меню Запрос SQL-запрос позволяет создавать более сложные запросы по сравнению с командой Запрос Выбрать.

Упражнение 3.

Найдите на карте болота (болотам соответствует категория земель = 60). Для этого выполните следующее:

1 Выполните команду Запрос SQL-запрос. На экране появится диалоговое окно SQL-запрос (рис. 11), которое имеет значительно больше параметров по сравнению с окном Выбрать (рис. 9).

Рис. 11 Диалоговое окно для создания запросов с помощью средств языка SQL

Порядок заполнения окна SQL-запрос следующий:

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]