Некравцева Т.А., Корелина Т.В.
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
к выполнению лабораторной работы № 7
по дисциплине «Геоинформационные системы»
для студентов дневной и заочной формы обучения
по специальности
230201 «Информационные системы и технологии».
Воронеж 2004
ОБЩИЕ МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ ЛАБОРАТОРНОЙ РАБОТЫ
Целью лабораторной работы является знакомство с настольной геоинформационной системой MapInfo и формирование собственных выражений при различных видах обработки. Для достижения этой цели необходимо:
Познакомиться с простыми и составными выражениями;
Изучить виды операторов, используемые в MapInfo;
Познакомиться с функциональными возможностями MapInfo.
В результате выполнения лабораторных работ студент должен знать:
Что такое простое и составное выражение в MapInfo;
Знать основные операторы MapInfo;
Знать какие функции можно использовать в MapInfo при составлении выражений;
Изучить приоритет операций, используемый в MapInfo.
Используемое в процессе работы оборудование: ПЭВМ класса IBM PC/486 стандартной конфигурации.
Перед выполнением лабораторной работы каждый студент должен изучить правила техники безопасности и пожарной безопасности при работе с ПЭВМ в лаборатории кафедры.
Указания по сдаче зачета преподавателю.
Для того, чтобы сдать зачет по лабораторной работе необходимо:
предъявить оформленный отчет;
ответить на контрольные вопросы.
ТЕОРЕТИЧЕСКИЙ МАТЕРИАЛ ДЛЯ ДОМАШНЕГО ИЗУЧЕНИЯ
Создание выражений
Процесс составления выражений MapInfo похож на то, как мы пишем предложения на естественном языке. В нашем распоряжении есть набор слов, которые можно использовать, и синтаксические правила для соединения этих слов. Синтаксис выражений MapInfo гораздо проще синтаксиса естественного языка. Правила естественного языка кажутся нам простыми только потому, что мы пользуемся им постоянно, а правила составления выражений могут только на первых порах показаться сложными.
|
Впрочем, как и предложения естественного языка, выражения в MapInfo можно сделать весьма сложными. Если Вы не освоились с созданием сложных выражений, все равно возможности, предоставляемые простыми выражениями, создаваемыми в диалогах команд MapInfo, позволяют управлять данными вполне профессионально.
Составление выражений
Простые выражения
Выражение составляются с использованием названий колонок (или полей) и констант (то есть постоянных значений), а также функций и операторов. Названия колонок и константы можно '^Ч сравнить с существительными, а функции и операторы - с глаголами, предлогами и союзами. В любом выражении всегда должно присутствовать хотя бы одно название колонки или хотя вы одна константа. Количество функций и операторов зависит от Ваших нужд и фантазии.
Простейшие возможные выражения состоят из названии колонок, например:
1. НАС_1990
2. ОБЛАСТЬ
Такие выражена; Вы можете использовать в команде Выделить условно, чтобы указать, какие данные должны быть отображены на карте. В команде Обновить КОЛОНКУ, подобное выражение задаст данные, которые следует использовать при пересчете таблицы.
Чуть более сложными являются выражения:
3. НАС_1990 > 17983
4. НАС_1990 <= НАС_1980
|
5. ОБЛАСТЬ < > "Выхино"
6. НАС_1980 * 1.2
7. НАС_1990 / ПЛОЩАДЬ
8. round (НАС_1980 / ПЛОЩАДЬ,.1)
Первые три из них используют оператор сравнения. Первое выражение задает проверку: было ли в 1990 году население больше (>) заданной константы (17983). Второе проверяет, какие значения в колонке НАС_1990 меньше или равно (<=) значениям из другой колонки НАС_1980. Третье проверяет, относится ли запись к области Выхино. Если название области не равно (< >) "Выхино", то запись попадает в выборку. Такие выражения могут быть применены в команде ВЫБРАТЬ или в окошке "С условием" команды SQL-ЗАПРОС. Эти команды делают выборку записей из таблицы, удовлетворяющих заданному выражению.
Примеры 6 и 7 использую арифметические операторы. В примере 6 значения в колонке НАС_1980 умножаются (*) на константу (1.2), а в примере 7 значения из одной колонки (НАС_1990) делятся на значения из другой колонки (ПЛОЩАДЬ).
В примере 8 применима функция округления, округляющая значение выражения "НАС_1990 / ПЛОЩАДЬ" до ближайшей десятой доли (.1).
Выражения 6, 7 и 8 не содержат операторов сравнения и поэтому не могут быть использованы в команде ВЫБРАТЬ или в окошке "С условием" команды SQL-ЗАПРОС. Однако Вы можете применить их в командах ВЫДЕЛИТЬ УСЛОВНО, Обновить колонку или в окошке "Выбрать колонки" команды SQL-ЗАПРОС.
Сложные выражения
Теперь рассмотрим примеры 9 ч 10, более сложные, чем 1-8:
9. НАС_1990 > НАС_1980*1.2
10. round((НАС_1980*1.2) / ПЛОЩАДЬ,.1)
Мы создали выражение 9, взяв выражение 3 и заменив константу "17893" выражением 6. Аналогично, выражение 10 получено из выражения 8 заменой названия "НАС_1990" выражением 6
|
Таким образом, сложные выражения получаются путем комбинации простых выражений. Возможно, лучшим способом изучения сложных выражений будет для Вас составление сложных выражений из примеров, которые приведены выше и будут еще рассмотрены в этом приложении. Сложные выражения создаются в основном двумя способами:
Заменой названия колонки или константы на простое выражение.
Соединенном выражений с помощью логических операторов (and, not, or).
Задание постоянных значений (констант)
При употреблении в выражениях фиксированных значений – строк, числовых констант и дат – Вы должны следовать следующим соглашениям.
Строки символов
Если Вы употребляете в выражении строку символов, то эта строка должна быть заключена в двойные кавычки. Таким образом MapInfo отличает строки символов от названий колонок. Например, строки 1 и 2 из приведенных ниже являются строками-константами, а 3 и 4 – не являются.
11. "Яблоко"
12. "Новый Орлеан"
13. Яблоко
14. Новый Орлеан
Числа
При задании числовых констант не набирайте запятые или знак доллара. Допустимы только цифры, десятичная точка, используемая как разделитель целой и дробной части, и знак минус для отрицательных чисел.
Даты
Даты состоят из месяца, дня и, возможно, года. Год обозначается двумя или четырьмя цифрами. Вся дата заключается в двойные кавычки, причем месяцы, дни и годы отделяются друг от друга знаками тире или наклонной чертой (/). Вот примеры допустимых дат, обозначающих двадцатое января:
15. "1-20-94"
16. "01/20/1994"
17. "1/20"
Операторы
Математические операторы:
+ | сложение | А + В |
- | вычитание | А - B (вычитание) -А (отрицательное число) |
* | умножение | А * В |
/ | деление | А / В |
^ | возведение в степень | А ^ В |
Разрешаются также следующие виды вычислений:
Прибавление числа к дате с получением новой даты
Вычитание числа из даты; с получением новой даты
Вычитание даты из даты с получением числа
При прибавлении чисел к датам или вычитании чисел из дат, MapInfo считает числа номером дня в месяце. Так, для вычитания или прибавления недели надо использовать число 7, а для вычитания или прибавления месяца – числа 30 или 31. При вычитании даты из даты результат содержит количество дней.
Строчный оператор
+ | "склейка" – соединение строк или строковых выражений |
Строки должны быть заключены в двойные кавычки. Рассмотрим пример:
"Ms. " + Фамилия
При вычислении значения этого выражения MapInfo поставит "Ms." перед каждым значением фамилии. Сороковая константа ("Ms.") взята в двойные кавычки. Аналогично
"Здравствуй, " + Мир"
Дает "Здравствуй, Мир", а
"дает строку "45.'
Операторы сравнения:
= | "равно" |
<> | "не равно" |
> | "больше" |
< | ''меньше" |
>= | "больше или равно" |
<= | "меньше или равно" |
Сравнение чисел
Числовое сравнение основано на сравнении значений числовых выражений и числовых констант.
18. Все дачные о домовладельцах, чей доход больше 65,000:
ДВ_ДОХОД > 65000
Внимание: Не используйте знак доллара или запятые! MapInfo не обрабатывает их и выдаст сообщение об ошибке.
19. Записи, где средний возраст равен 42:
СРЕД_ВОЗРАСТ = 42
Внимание: Это выражение задает выбор только тех записей, в которых средний возраст в точности равен 42 годам. Если же колонка данных о среднем возрасте содержит значения с дробной частью (а именно так MapInfo вычисляет ряд демографических данных), то вряд ли найдется достаточно много регионов со средним возрастом ровно 42 года.
20. Лучше применить следующее выражение:
Round(СРЕД_ВОЗРАСТ, 1) = 42
Внимание: Функция " Round (число, число)", округляет первый свой аргумент с точностью, задаваемой вторым аргументом. В приведенном примере первое число означает средний возраст (СРЕД_ ВОЗРАСТ), а второе (1) показывает, что средний возраст надо округлять до ближайшего целого числа.
21. Все суммы, не равные 23,000:
СУММА <> 23000
Внимание: Вы можете использовать функцию Round, если не имеете в виду только точное значение 23000.
Сравнение строк
Строковое сравнение основано на посимвольном сравнении строк. В этом смысле ">" означает "в алфавитном порядке больше" (т.е. идет позднее по алфавиту) и "<" означает "в алфавитном порядке меньше. При сравнении строк учитывается различие больших и малых букв.
Для того чтобы в выражении строки отличались от названий колонок, строки заключаются в двойные кавычки.
22. Все клиенты фирмы "Комета":
ПОСТАВЩИК = "Комета"
Внимание: Помните, что строка должна быть заключена в двойные кавычки, иначе MapInfo будет искать колонку с названием Комета.
23. Все, кроме клиентов фирмы "Комета":
ПОСТАВЩИК <> "Комета"
Сравнение дат
24. Все, что доставлено 9 октября 1991:
ДОСТАВЛЕНО = "10-9-91"
Внимание: Обратите Внимание на то, что:
Дата заключена в двойные кавычки.
Она имеет вид: месяц-день-год.
Числа в дате разделены тире. Можно использовать также (/).
Год обозначен двумя цифрами. Может быть указано и четыре 1991.
25. Все, что доставлено после 9 октября 1991.
ДОСТАВЛЕНО > "10-9-91"
Внимание: Это выражение не выберет записи, относящиеся к 9 октября 1991. Если Вы хотите учитывать эту дату, то укажите ДОСТАВЛЕНО >= "10-9-91".
26. Все, что доставлено до августа:
26. Month(ДОСТАВЛЕНО) < 8
Внимание: Это выражение использует функцию Month для точного указания месяца. Если в Вашей базе есть данные за несколько лет, обратите внимание на то, что приведенное выражение не уточняет, какой именно год имеется в виду.
Логическое сравнение
27. Все, что было отправлено:
ОТПРАВЛЕНО
Внимание: Колонка "ОТПРАВЛЕНО" является логической. Она содержит "Т" в случае истинности и "F" в случае ложности утверждения. При отправке товара в ней ставится "Т". Иначе там стоит "F". Для отправленных товаров выражение из примера 27 имеет значение истина, для остальных - ложь.
28. Все, что не отправлено.
ОТПРАВЛЕНО = "F"
Not ОТПРАВЛЕНО