Educational Technology & Society 11(3) 2008

ISSN 1436-4522

 

Инструментальные средства хранения и обработки пространственных данных

 

И.С.Ризаев,

доцент, канд.техн.наук,

Казанский государственный технический университет им. А.Н. Туполева,

ул. К.Маркса, 10,  г. Казань, 420111,

rizaev@asu.kstu-kai.ru

 

П.В.Сапаркин,

аспирант,

Казанский государственный технический университет им. А.Н. Туполева,

ул. К.Маркса, 10,  г. Казань, 420111

 

Я.Рахал,

аспирант,

Казанский государственный технический университет им. А.Н. Туполева,

ул. К.Маркса, 10,  г. Казань, 420111

аннотация

Рассматривается комплекс лабораторных работ предназначенных для хранения и обработки пространственных данных. В настоящее время для решения задач, связанных с пространственными данными используется технология географических информационных систем (ГИС). Существует много различных инструментальных систем ГИС. Для обучения технологии ГИС используется популярный пакет MfpInfo. Для разработки приложений используется MapBasic.

The complex of laboratory works intended for storage and processing of spatial data is considered. Now for the decision of the problems connected with spatial data the technology of geographical information systems (GIS) is used. There are many various tool systems GIS. For training of technology GIS popular package MfpInfo is used. For working out of means of appendices it is used MapBasic.

 

Ключевые слова

обучение,  географические информационные системы, ГИС, пространственные данные, СУБД, комплекс лабораторных работ, карты, таблицы.

learning,  Geographical information systems, spatial data, DBMS, a complex of laboratory works, cards, tables,  MapInfo, MapBasic.

 

Существующие реляционные СУБД не могут решать задачи, связанные с пространственной информацией. Несмотря на значительные успехи существующих СУБД, они не способны управлять пространственными данными. Эти СУБД способны успешно хранить и извлекать деловую и бухгалтерскую информацию, сведения о товарах, сотрудниках, клиентах и т.д. Данные, хранящиеся в таких базах данных достаточно просты – это числа, имена, адреса и пр. Вопрос типа: «Перечислить сведения о сотрудниках предприятия, имеющих стаж более 5 лет» будет эффективно обработан СУБД. Но сравнительно простой запрос: «Перечислить все автозаправочные станции (АЗС), находящиеся в 10км от центра города» - поставит базу данных в тупик. Так как такой запрос потребует вычисления расстояний на основе знаний пространственных координат.  ГИС  является удобным средством для анализа и визуализации пространственной информации на основе географических данных. Основными составляющими ГИС являются электронная карта (ЭК), база данных (БД) и система анализа [1-3].

В настоящее время многие организации и фирмы распространяют в России как зарубежные, так и отечественные  системы для создания ГИС - технологий. Эти системы отличаются как назначением, так и требуемыми ресурсами.

Большинство инструментальных систем ориентированы на использование платформ PC. Среди них можно отметить: MapInfo, ArcInfo, ArcView, ArcCAD(ESRI), WinGIS, ArGIS, AtlasGIS, ERDAS, GeoDraw, CADdy, MGE, «Карта 2000», «Панорама».

Пакет MapInfo широко используется у нас в стране для решения задач ГИС.

MapInfo – это развитая система настольной картографии, позволяющая решать задачи: географического анализа, связь с удаленными базами данных, создание тематических карт, включение графических объектов в другие приложения и др. [4].

Поэтому на кафедре «Автоматизированные системы обработки информации и управления» КГТУ им.А.Н.Туполева в рамках дисциплины «Геоинформационные системы» поставлен комплекс лабораторных работ в среде MapInfo и MapBasic.

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

-    методы анализа данных в реляционной базе данных;

-    поиск географических объектов;

-    -методы тематической закраски карт;

-    -методы создания и редактирования легенд;

-    -поддержка широкого набора форматов данных;

-доступ к удаленным БД и распределенная обработка данных.

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

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

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

MapInfo позволяет:

1.       Представлять карту как набор слоев;

2.       Наносить данные на карту из БД (для этого каждая из записей должна быть ассоциирована с географическими координатами (геокодирование)).

3.       Производить выборки:

- с помощью стрелки;

- выбор-в-круге (напр., выбрать все города, лежащие в пределах 300 км от указанного города);

- выбор-в-области;

- выбор-в-рамке;

- выбор по запросу.

4.       Использование тематических карт для анализа данных. Тематические карты позволяют увидеть зависимость и закономерность данных. Например: карта плотности населения методом диапазонов, карта городов в зависимости от числа жителей.

5.       Интеграция с другими приложениями. Карты, подготовленные в MapInfo легко и просто можно поместить в документы других программ (Microsoft Word, Corel Draw), Электронные таблицы, MS Access.

6.       Размещение подписей на карте

- автоматическое подписывание объектов;

- подписывание индивидуальных объектов;

- добавление свободных текстов.

7.       Создание и редактирование карты:

- рисование и редактирование объектов на карте;

- автоматическая трассировка границ.

8.       Районирование. Механизмы районирования помогают осуществлять трудоемкое планирование. Используют для того, чтобы включить клиентов в те или иные районы.

9.       Работа с растровыми изображениями.  Реализация является основой для математического преобразования данных, представленных в одной координатной системе (пиксельная система координат) в другую систему координат (широта/долгота). Для этого заданы контрольные точки.

10.    Формирование отчета. В окне отчета готовится макет, на котором размещаются для печати любые изготовленные в MapInfo материалы: карты, списки, графики, легенды, текст или другие графические объекты.

11.    Географический анализ:

- создание территорий сбыта путем объединения областей (полигонов);

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

 

Для знакомства с инструментальными средствами MapInfo в систему загружается карта, например карта мира (World), см.рис.1. Для этого производится загрузка файлов World.tab, Worldcap.tab, Ocean.tab, Grid15.tab.

 

 

 

Рис.1. Карта World (Мира)

 

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

Система позволяет производить статистический анализ, например, выборку численности населения по городам, странам, построить графики и др. См. рис. 2, 3, 4.

   

 Рис.2. Численность стран с населением более 100млн.

 

 

Рис.3. График численности населения выбранных стран

 

Рис.5. График численности населения отдельных столиц мира

 

В MapInfo имеются средства составления самых различных запросов (с использованием средств языка SQL) к указанным таблицам. 

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

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

 

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

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

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

MapInfo размещает на слоях четыре основных вида объектов:

·         Области: многоугольники, эллипсы, прямоугольники, представляющие регионы, территории и т.д.

·         Точечные объекты: адреса клиентов, магазинов и т.д.

·         Линии, дуги и ломанные (полилинии): дороги, реки и т.д.

·         Текстовые объекты: названия городов, подписи к географическим объектам, заголовки карты и др.

Вывод информации можно производить в виде карты, списка, графика или отчета.

Создание таблиц

Создание таблицы (слоя) происходит в меню File -> New Table. По нажатию выдается панель, где галочкой предлагается указать открытие таблицы (Open New Browser) и карты (Open New Mapper). Далее появляется окно создания структуры таблицы (конструктор) в котором происходит определение наименования столбцов (в поле Name) и их типа (в поле Type). Там же можно расположить столбцы по порядку кнопками с правого бока окна. Во внутреннем экране окна отображается текущее положение созданных столбцов. Там же стоит поле Index, где рекомендуется выставить флажок. По завершению работы в этом окне необходимо сохранить созданную таблицу. 

Модификация таблиц происходит в меню Table -> Maintenance. Здесь возможны следующие виды изменений таблицы: изменение структуры, удаление таблицы, переименование и сжатие.

Любая таблица в пакете представляет собой законченный слой. Управление слоями (подключение, отключение, удаление) осуществляется через функцию Layer Control. Кнопка, включающая эту функцию, расположена на плавающей панели Main. При нажатии на эту кнопку происходит открытие окна управления слоями. Внизу окна расположены кнопки Добавление слоя (Add) и удаление слоя (Remove), а также управление местоположением слоя (Up и Down).

 

Рисование карт

 

В MapInfo имеется полный набор инструментов и команд для рисования и редактирования графических объектов. Необходимые объекты выбираются на плавающей панели инструментов Drawing. Здесь можно выбрать инструменты: линию, полилинию, прямоугольник, дугу, эллипс, многоугольник и др.

Чтобы рисовать надо сделать слой изменяемым  Карта -> Управление слоями. Выбрать слой и установить флажок “Изменяемый (Editable)”. Так, например, если необходимо изобразить область необходимо выбрать инструмент Многоугольник. Мышкой нарисовать многоугольник и для замыкания ломанной дважды щелкнуть левой кнопкой мыши. Для изменения форм объектов необходимо выбрать объект с помощью стрелки и выполнить изменения.      На рис.6 показан пример составления карты районов. Карта включает три слоя: районы (полигоны), города и дороги.             

 

 

Рис.6  Карта районов

 

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

Рис.7. Граф длины дорог

 

Следующим этапом работ является оцифровка растрового изображения.

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

 

Регистрация растрового изображения

 

Растровое изображение - это компьютерное представление графического материала в виде набора точек растра. Растровые файлы создаются с помощью сканера. Система MapInfo может читать и показывать растровые изображения, созданные программами сканирования.

Существует большое число различных форматов растровых файлов в MapInfo: JPEG, GIF, TIFF, PCX, BMP, TGA и BIL.

Если Вы хотите показать растровое изображение в окне Карты, то его сначала надо зарегистрировать. Чтобы MapInfo показывала растровое изображение правильным образом, вместе с векторными данными поверх него, следует провести регистрацию изображения. Регистрация проводится в диалоге «Регистрация изображения». Здесь Вы определяете координаты точек привязки, а также тип проекции растрового изображения.

Когда Вам нужно регистрировать растровое изображение, Вы вводите координаты Карты (т. Е. широту и долготу) и задаете, как точки растрового изображения связаны с этими координатами. Регистрируя каждое изображение до того, как начать работать с ним на экране в среде MapInfo, Вы открываете возможность производить над растром географические вычисления, такие как вычисление расстояния и площади.

Когда Вы открыли файл растрового изображения впервые, появляется диалог «Регистрация изображения». Заполнив этот диалог, Вы зарегистрируете растровое изображение. В дальнейшем эта информация будет храниться в файле таблицы. Таким образом, регистрировать растровое изображение нужно только один раз.

После выполнения регистрации изображения (поле того, как Вы нажмете на кнопку «OK» в диалоге «Регистрация изображения») MapInfo создаст табличный файл (файл с расширением .TAB), где будет сохранена информация о регистрации. В следующий раз это растровое изображение Вы можете открыть как таблицу командой Файл > Открыть таблицу без повторения регистрации.

 Далее необходимо произвести обрисовку зарегистрированного растрового изображения. Для этого создайте новую таблицу для нанесения улиц города. Например, Kazan_Street(Street, Line). С помощью кнопки Управление слоями, разместите новую карту Kazan_Street поверх растрового изображения Казань. Сделайте слой изменяемый. С помощью инструмента ломанная линия, (подобрав соответствующий стиль и цвет) необходимо нанести основные улицы г.Казани. Сведения об улицах заносятся в таблицу. Для этого необходимо создать новую таблицу парковых зон г.Казани Park(NP, Name, Ploshad). Обрисовать парковые зоны. Занести соответствующую информацию в таблицы. Создать таблицу водных бассейнов г.Казани.  Создать таблицу отличительных мест в г.Казани (площади, стадионы, учебные заведения, банки и т.д.)

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

 

 

Рис.8. Оцифровка растровой карты

 

Среда разработки приложений для MapInfo

 

Пакет MapBasic поставляется вместе с интегрированной средой разработки. В этой интегрированной среде  можно писать и компилировать программы на языке MapBasic. Среда разработки включает в себя:

Ø  Текстовый редактор, в котором  можно набирать тексты программ.

Ø  Компилятор языка MapBasic. После написания программы ее надо откомпилировать, собрать «выполняемый» файл (т.е. такой, который можно запустить под MapInfo).

Ø  Сборщик MapBasic (linker). При создании больших приложений, состоящих из нескольких модулей,  потребуется «собирать» их в единое целое с помощью компоновщика.

Ø  Справочную систему по языку MapBasic, содержащую сведения об операторах и функциях языка программирования MapBasic.

Программы на MapBasic работают под управлением системы MapInfo. Сначала нужно создать и скомпилировать программу в интегрированной среде MapBasic; затем запустить MapInfo и после этого – вашу программу. Таким образом, программы на языке MapBasic не являются полностью самостоятельными; их можно запускать только при наличии MapInfo [5].

 

 

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

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

Выбрав одну из команд меню, пользователь порождает событие, которое MapBasic должен обработать. Обычно  в MapBasic-программах для этого заготавливаются процедуры-обработчики или просто обработчики, которые срабатывают в ответ на определенные события. Оператор Call вызывает Sub-процедуру. Если процедура является обработчиком, то оператор Call не нужен. Вместо него процедуру вызывает  предложение Calling.

Инструментальные панели (Button Pads) являются важной частью  интерфейса пользователя MapInfo. С кнопками инструментальных панелей связаны соответствующие процедуры обработчики, которые автоматически выполняются при нажатии пользователем на кнопку.

При определении  новой кнопки, необходимо указать пиктограмму, которая появляется на кнопке. MapInfo содержит много встроенных пиктограмм, большинство из которых не используются в интерфейсе пользователя MapInfo. Чтобы увидеть такую пиктограмму необходимо запустить программу из комплекта поставки ICONDEMO.MBX и выбрать из меню интересующую  инструментальную панель. Чтобы видеть код соответствующей пиктограммы, задержите курсор мышки над кнопкой над ней или нажмите на соответствующую кнопку.

Для создания нового меню используется оператор Create Menu. Например, следующий код создает новое меню Рамка:

 

                   Create Menu  Рамка” As

                          “&Создать рамки   Calling Create_sub,

                          Выход          Calling Bye,

                          О программе                  Calling About

 

Однако создание нового меню не влечет за собой его немедленный показ на экране. Чтобы сделать меню РАМКА видимым, добавьте его в систему меню оператором Alter Menu Bar:

 

              Alter Menu Bar Add “Рамка

 

Оператор Alter Menu Bar Add добавляет новое меню с правой стороны строки заголовков меню. Новое меню будет выглядеть следующим образом:

 

 

 

 

Программа MapBasic может открывать и манипулировать любым стандартным окном MapInfo (Карта, Список и т.д.).

Чтобы открыть новое окно можно воспользоваться одним из операторов: Map, Browse, Graph, Layout или Create Redistricter. Так как в этих окнах показываются данные из таблиц, то необходимо проследить за тем, чтобы перед выполнением этих операторов соответствующие таблицы были открыты.

Чтобы таблица стала доступной в приложении на языке MapBasic, эту таблицу надо сначала открыть. Это можно сделать с помощью оператора Open Table. Например, следующий оператор открывает таблицу WORLD:

 

Open Table “C:\mapinfo\data\world”

 

Чтобы добавить слой в окно карты, используется оператор Add Map Layer. Удалить слой можно оператором Remove Map Layer.

Ниже приведен пример создания меню для открытия карты мира (World).

Declare Sub Main                  //главная процедура

Declare Sub Open_map         //процедура открытия карты

Declare Sub Open_tab          //процедура открытия таблиц

Declare Sub About                //описательная процедура

Declare Sub Bye                   //процедура закрытия

Sub Main

                Create Menu “Карта мира” As

                               Открыть карту” Calling Open_map,

                               Открыть таблицу” Calling Open_tab,

                               О программе” Calling About,

                               Выход” Calling Bye

                Alter Menu Bar Add “карта мира

                End Sub

                Sub Open_map

                               Open Table Ocean As Oc

                               Open Table “Gridis” As Gr

                               Open Table “World” As Wr

                               Open Table “Wreap” As Wreap

Map From Oc

Add Map Layer br

Add Map Layer Wr

Add Map Layer Wreap

End Sub

Sub Open_tab

                Browse * From Wr

                Browse * From Wreap

End Sub

Sub About

                Note “Программа открытия карт”

End Sub

Sub Bye

                End MapInfo

End Sub

 

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

 

Grarh cтрана, население From World

 

Первый элемент после слова Graph интерпретируется как колонка, содержащая надписи у осей; остальные элементы интерпретируются как данные, которые нужно отобразить на графике.  В примере, приведенном выше, отображаемые на графике значения задаются просто именем колонки, но можно задать любое допустимое числовое выражение.

Тип данных Object в языке MapBasic позволяет работать как с простыми графическими объектами (такими как линии), так и со сложными объектами (например, областями). С переменными типа Object можно работать почти так же, как и с переменными других типов: им можно присваивать значения переменных типа Object, передавать такие переменные как аргументы процедур и функций, а также сохранять значения переменных типа Object в таблицах MapInfo.

Определить переменную-объект можно с помощью оператора Dim:

 

                               Dim MyObj, Office As Object

 

Переменная типа Object может содержать любой графический объект Карты или Отчета. Переменная типа Object хранит информацию об объекте на Карте. Например, если сохранить линию в переменную типа Object, то такая переменная будет содержать не только географическую переменную о линии (т.е. координаты начала и окончания линии), но и информацию о представлении (цвет, толщину и тип линии). В языке MapBasic имеется также четыре типа переменных стиля (Pen, Brush, Symbol и Font), в которых можно хранить описание типов (стилей) графических объектов без конкретных координат.

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

 

Заключение

 

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

 

Литература

 

1. Шаши Шекхар, Санжей Чаула. Основы пространственных баз данных./Пер. с англ. – М.:КУДИЦ-ОБРАЗ. 2004. – 336 с.

2. Де Мерс, Майкл И. Географические информационные системы. М.:, 1999.

3. Взаимодействие картографии и геоинформатики. Под ред. А.М.Берлянта, О.Р.Мусина. -.:Научный мир, 2000. – 192 с.

4. MapInfo Professional. Руководство пользователя. – М.: 2006

5. MapBasic. Среда разработчика. Руководство пользователя. – М.: 2007