Географические информационные системы Лекция 2008-02-25 6 В первой лекции мы рассмотрении функции хранения, обмена. Теперь рассмотрим изменение баз данных, включая сортировку, выбор. Создание баз данных Первый способ – создание базы данных известной командой File \ New Table, когда вручную формируется ее структура, а затем вручную вводятся значения признаков объектов. Этот способ годится разве для создания ключевых полей для идентификации графических объектов. Второй способ – импорт в среду MapInfo внешних баз данных. Структура и содержание (ввод данных) формируется в какой-либо внешней удобной программе, лучше всего в Excel или Access, и экспортируются в файл какого-либо общего формата. Затем эти файлы импортируются в среду MapInfo (и далее подсоединяется к графическим объектам). Команда: File \ Open Table. MapInfo открывает разные типы файлов: MapInfo – файлы *.tab, содержащие описание таблицы, уже построенной в среде. dBase DBF – файлы *.dbf, давно служат хорошим способом обмена между самыми разнообразными базами данных. Достоинство состоит в том, что они строго поддерживают формат базы данных и открываются без утомительных диалогов. Недостаток состоит в том, что в этом формате передается только латиница, а кириллица заменяется на псевдографику, поскольку MapInfo открывает только файлы ранней версии dBaseIII. Delimited ASCII – файлы *.txt, текстовые файлы, содержащие информацию в кодах ASCII, т. е. они открываются и изменяются простыми редакторами типа Блокнот (что очень удобно). Позволяют передавать кириллицу, однако при внедрении в среду открываются диалоговые окна для уточнения структуры базы. Для сохранения информации из среды Excel следует выбрать тип файла Текстовые файлы (с разделителями табуляции) (*.txt). Это самый удобный способ обмена данными. Lotus 1-2-3 – файлы *.wk3; еще один формат файлов баз данных вроде *.dbf, тоже не поддерживает кириллицу (MapInfo воспринимает файлы ранних версий), хотя поддерживает формат многостраничных книг. Microsoft Excel – файлы *.xls, файлы в формате Excel. В этом формате можно передать кириллические символы. MapInfo импортирует только ранние версии, например Excel 4.0, имеющие в книге всего один лист. Чтобы создать такие файлы в современных пактах Excel, данные нужного листа сохраняют в формате Excel 4.0 (*.xls). В диалоге, уточняющем структуру файлов, следует указать, что первую строку следует использовать для подписи столбцов, а читать данные следует не со всей таблицы (Entire Worksheet), а со второй строки (A2:…). Raster Image – растровые файлы типа *.bmp и *.jpg для формирования не баз данных, а подложек для карт. Импорт внешней базы данных состоит в том, что MapInfo создает файл типа *.tab, описывающий структуру данных, находящихся в файле другой программы (база теперь представлена двумя файлами, например, ИмяБазы.txt и ИмяБазы.tab). При этом импортированная база данных может использоваться в среде MapInfo для дополнения других таблиц, для построения запросов, но не может сама изменена! Для того, чтобы перевести такую базу в полное пользование MapInfo, ее следует сохранить под другим именем: File \ Save Copy As…. Тогда создается новый файл описания (НовоеИмяБазы.tab) и еще один новый файл, содержащий все данные во внутреннем формате MapInfo (НовоеИмяБазы.dat). Структура и поля новой базы становятся доступными для изменений. Лейтмотив работы: изменять копию, хранить оригинал. Для создания копий: File \ Save Table As, Table \ Maintenance \ Rename. Изменить значения в ячейке. 1. Изменить значение в одной ячейке вручную с помощью мышки и клавиатуры. 2. Внести одинаковые значения в серию ячеек вручную с помощью Запроса. 3. Рассчитать значения (функции) в отдельном столбце – обновить колонку Table \ Update Column. Арифметические операции * + - / ^, функции count, avg, графические операторы Area, CentroidX, ObjectLen. Удобнее вычислять в запросах. 4. Изменить значения во множестве ячеек отдельного поля (в столбце) с помощью мастера обновления колонок (Table \ Update Column). Окно имеет вид: Обновить в таблице __________ поле ______________ значение извлечь из таблицы _(той же)_________ значение __________ 5. Изменить автоматически, взяв данные из другой таблицы, связанной с первой по ключевым полям. Окно имеет вид: Обновить в таблице __________ поле ______________ (или добавить временную колонку) значение извлечь из таблицы __________ Объединение… Вычислить значение __________ для _______________ Объединение формирует связь во ключевым полям или с помощью графических операторов: Совместить столбцы по колонке ___________ из Табл 1 и по колонке ___________ из Табл 2. Изменить число записей. 1. Создать объект в окне карты (и запись в окне списка) 2. Удалить объект или запись. 3. Объединить, разрезать объекты в окне карты. 3. Добавить (снизу) несколько записей к первой таблице из другой таблицы Table \ Append Rows. Формат первой таблицы служит шаблоном для второй (тип и число полей – следить за унификацией). + + 4. Построить Запрос: простой запрос – выборка записей из одной таблицы, SQLзапрос – выборка записей из нескольких таблицы. Запрос – виртуальная база данных. Ее можно сохранить как таблицу, разорвав связи с базовой: File \ Cave Copy As … Новое_Имя. Главное свойства Запроса состоит в том, что он сохраняет связь с базовыми таблицами. Изменяя значения в ячейках запроса, мы тем самым вносим изменения в ячейки исходных таблиц. Запрос поэтому есть удобное средство обработки части записей исходной базы данных. Технология работы с ним такова. Задав критерий, извлекаем запрос. Обрабатывает записи запроса. Сохраняем базовую базу данных. а). Отбор записей из таблицы, соответствующих условию = простой запрос Query \ Select Окно имеет вид: Выбрать из таблицы __________ согласно условия ______________ Assist (составить) Результат в таблицу Сортировать по колонке_______________ Общий вид условия: Таблица.Поле – выражение отношения – критерий (значение) Табл1.ПолеХ = 3, Табл1.ПолеХ = “г” (кавычки для текстовых условий) Табл1.ПолеХ > 3 And Табл1.ПолеZ < 45 (логическое И, жесткое условие) Табл1.ПолеХ > 3 Or Табл1.ПолеZ < 45 (логическое ИЛИ, мягкое условие) (у кого есть: 300 руб. И красная куртка, 300 руб. ИЛИ красная куртка) Выражения условий: =, >,<, ≥, ≤, And, Or, Nor. Табл1.ПолеХ > “” 1 в г 2 3 a g 4 1 в г 3 a g б). Отбор из двух таблиц по ключевым полям = сложный SQL запрос Query \ SQLSelect, окно имеет сложный вид. Этот запрос похож на предыдущий с той разницей, что условие отбора записей из табл1 заданы в табл2. Выбрать колонки _________________ из таблиц _________________ с условием _________ ________ Сортировать по колонке_______________ Результат в таблицу ОК Таблицы Колонки Операторы Функции Проверить Чтобы заработало условие, нужно А). соединить две таблицы специфической связью между ключевыми полями, Б). отобрать из построенного запроса записи по условию. отбор по ключам = отбор по условию табл1.п1=табл2.п1 1 3 а б x y 1 в г 2 3 a g 4 + 1 а б 1 3 x y 3 в а г g Изменить число полей. 1. Создать новые или удалить старые: Table \ Maintenance \ Table Structure 2. Скрыть неиспользуемые поля Browser \ Pick Fields (внести поля) 3. Добавить (сбоку) одно или несколько полей из внешней таблицы = Сложный SQL-запрос. Рассмотрим только понятийные схемы. или + или А. Присоединение атрибутивных данных к графическим объектам = сложный запрос Query \ SQL-Select: совпадение ключей Табл1.п1=Табл2.п1 1 1 2 3 4 2 3 41 + 1 в г 2 3 a g 4 1 в г 2 3 a g 4 В. Объединение баз данных по атрибутивным условиям. (см выше) Г. Объединение баз данных по графическим условиям. Табл1.obj intersects Табл2.obj 4 8 3 4 а м a п 1 2 3 4 8 5 га 6 гу 1 го 3 ги Д. Table \ Create Points Е. Table \ Geocode Типичные задачи изменения баз данных 1. 2. 3. 4. 5 4 4 +8 2 4 1 3 1 4 4 8 3 4 а м a п 5 4 4 8 1 2 3 4 Внесение однотипных значений во многие ячейки одного поля Пополнение основной базы данных значениями из внешней базы Снабжение географических объектов атрибутивными данными Чтение (атрибутивных и пространственных) данных с карты 5 6 1 3 га гу го ги