OLAP.ru   Rambler's Top100
Вы находитесь на страницах старой версии сайта. Перейдите на новую версию OLAP.ru
  
Поиск по сайту
Новости
Основы OLAP
Продукты
Business Objects/ Crystal Decisions
Каталог
OLAP в жизни
Тенденции
Download
Яndex
 
 
 
TopList
 

Система анализа образовательной статистики на основе интеграции OLAP и GIS технологий

М.С. Заботнев,
м.н.с. Государственного научно-исследовательского института информационных образовательных технологий “Госинформобр”

Аннотация

В статье рассматриваются принципы и технические решения, лежащие в основе информационной аналитической системы, целью которой является повышение эффективности решения управленческих задач в сфере образования РФ. Система основана на применении эффективных методов анализа и визуализации больших объемов статистических данных и является уникальным примером интеграции информационных технологий Oracle Express компании Oracle и GIS-технологии компании MapInfo. Статья может быть полезна широкому кругу читателей, начиная от управленцев и заканчивая программистами, так как кроме освещения общих, принципиальных проблем, возникающих в рамках рассматриваемой задачи, содержит ответы на конкретные технические вопросы и рекомендации по обходу “подводных камней”, с которыми автор столкнулся в ходе создания системы.

Введение

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

Альтернативой традиционным методам анализа данных, основанным на различных системах реализации SQL-запросов к реляционной базе данных является технология оперативной аналитической обработки данных (OLAP). В основе OLAP лежит многомерная модель представления данных, в которой на смену таким понятиям как отношения и сущности приходят понятия измерений и кубов данных. Именно многомерность представления данных позволяет сделать механизм получения данных более доступным и интуитивно понятным аналитику, а многие ограничения языка SQL перестают существовать в силу принципиально иного механизма создания отчетов средствами OLAP. Так, например, подсчет суммарных величин уже не требует времени непосредственно на этапе анализа, поскольку все возможные суммы уже подсчитаны на этапе построения многомерной базы данных. Реляционная база данных, содержащая всю статистическую информацию о предметной области, превращается в хранилище данных в терминах OLAP, а процесс создания структуры аналитической системы сводится к определению измерений и организации витрин данных.

Одним из популярных средств разработки OLAP-систем является семейство программных продуктов Oracle Express OLAP компании Oracle. ПО Oracle Express предоставляет широкие возможности для создания аналитических систем на основе сервера многомерных баз данных – Oracle Express Server. В состав инструментальных средств Oracle Express входят средства создания и администрирования многомерных баз данных – Express Administrator, средство визуального создания “облегченных” клиентских приложений и презентаций – Express Analyzer, профессиональная инструментальная среда объектно-ориентированной разработки OLAP-приложений - Express Objects, позволяющая создавать сложные интегрированные клиентские приложения, и другие средства, связанные с публикацией данных в Интернете.

В настоящей статье рассматривается пример построения аналитической системы для анализа образовательной статистики РФ. Основой системы является сервер многомерной базы данных – Oracle Express Server 6.2, а в качестве клиента используется приложение, созданное в среде Express Objects. Таким образом, приложение обладает всеми преимуществами реализации технологии OLAP в рамках рассматриваемой предметной области. Кроме того, приложение обладает возможностью отображения территориальных объектов и данных, соответствующих этим объектам, на географической гарте. Данная функциональность реализована с применением технологии GIS (Гео-информационная система) компании MapInfo.

Технология GIS применяется в информационных системах, предназначенных для анализа пространственно распределенных данных. Возможности динамической связи картографических объектов с данными (картографическая привязка данных) существенно расширяют функциональность аналитической системы. Реализация технологии GIS позволяет осуществлять пространственные запросы к базе данных и помогает существенно сократить время получения требуемой информации. Пользователь имеет возможность получать визуальное представление о территориальном расположении объектов и соответствии данных этим объектам. Применение различных схем картографической визуализации повышает степень восприятия “голых” числовых данных.

Рассматриваемая система является уникальным примером интеграции современных информационных технологий – Oracle Express OLAP и MapInfo GIS. Принципы, положенные в основу создания данного приложения, являются общими для систем такого рода и могут быть применены для создания аналогичных аналитических систем.

Структурная схема аналитической системы

Ядром системы является многомерная база данных (МБД), предоставляющая возможность реализации механизма составления отчетов на основе технологии OLAP. Система построена по принципу клиент-сервер и обеспечивает удаленный и многопользовательский доступ к серверу МБД (Рис.1). Рассмотрим составные части системы более подробно.

Рис. 1 Структурная схема аналитической системы

Хранилище данных

Исходные данные представляют из себя значения показателей для конкретных образовательных учреждений. В число показателей входят такие как численность учеников и преподавателей, компьютерное оснащение, учебная нагрузка и многие другие. Данные собираются и помещаются в хранилище, спроектированное в соответствии с принципами построения хранилищ данных и представляющее из себя реляционную базу данных (РБД), организованную по схеме “звезда”. Основная таблица хранилища данных (таблица фактов) содержит числовые значения показателей, по которым собирается статистическая информация. С таблицей фактов связанны другие таблицы (таблицы измерений) в соответствии с топологией “звезда”. Список показателей, список географических объектов и объектов образования, тип образовательного учреждения, тип собственности, тип местоположения учебного заведения являются таблицами измерений (Рис. 2). Таблица, содержащая территориальные объекты РФ (федеральные округа, субъекты федерации, районы, города и другие населенные пункты, образовательные учреждения), имеет иерархическую структуру, т. е. каждый территориальный объект, начиная с образовательного учреждения, включен в более высокий по уровню иерархии согласно административному делению территориальных объектов РФ.

Рис. 2. Структура хранилища данных по образовательной статистике

Предусматривается ежегодное пополнение хранилища данными. Технология сбора и пополнения хранилища новыми данными представляет из себя отдельную сложную задачу и ее рассмотрение выходит за рамки данной статьи, однако такие задачи решаются уже довольно долгое время и на этом пути гораздо меньше нерешенных проблем по сравнению с количеством попыток ответить на вопрос: “Как повысить эффективность обработки больших объемов статистической информации?”.

Многомерная база данных

Хранилище данных служит поставщиком информации для многомерной базы данных, представляющей из себя набор объектов, которые позволяют манипулировать данными необходимым для аналитика образом. Основными классами этих объектов являются измерения и показатели. К измерениям относятся множества значений (параметров), по которым происходит индексация данных, например, время, регионы, тип учреждения и т. п. Каждое измерение заполняется значениями из соответствующих таблиц измерений хранилища данных. Совокупность измерений определяет пространство исследуемого процесса. Под показателями понимаются многомерные кубы данных (гиперкубы). В гиперкубе содержатся сами данные, а также агрегатные суммы по измерениям, входящим в состав показателя. Показатели составляют основное содержание МБД и заполняются в соответствии с таблицей фактов. Вдоль каждой оси гиперкуба данные могут быть организованы в виде иерархии, представляющей различные уровни их детализации. Это позволяет создавать иерархические измерения, по которым при последующем анализе данных будут осуществляться агрегирование или детализация представления данных. Типичным примером иерархического измерения служит список территориальных объектов сгруппированных по районам, областям, округам.

Клиентское приложение

Данные, структурированные соответствующим образом и хранимые в МБД доступны для анализа с помощью клиентского приложения. Пользователь получает возможность удаленного доступа к данным, формулирования сложных запросов, генерации отчетов, получения произвольных подмножеств данных. Получение отчета сводится к выбору конкретных значений измерений и построению сечения гиперкуба. Сечение определяется выбранными значениями измерений. Данные по остальным измерениям суммируются. Таким образом, аналитик получает возможность глобальной оценки показателей в масштабах России в целом. В случае, когда аналитику требуется более детальная информация, например, количество учеников по области или району, он может опускаться на более низкие ступени иерархии измерения, содержащего территориальные объекты и получать информацию по ним. Аналитик имеет возможность получить информацию по конкретному учебному заведению, выбрав его в качестве параметра сечения, а также изменять другие параметры, например тип учебного заведения, время (год) и т. п. При этом требуемую информацию удается получить за относительно короткий промежуток времени, без существенных задержек, характерных при работе с реляционными базами данных.

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

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

Клиентское приложение обладает дружественным и интуитивно понятным интерфейсом, поддерживает многооконный режим, а также экспорт данных в формат MS Excel. На рисунках, прилагаемых к статье, представлены результаты выполнения типовых запросов к аналитической системе. Рис. 3 демонстрирует результаты запроса количественных данных по численности учеников с разбиением на классы по выбранным областям.

Рис. 3. Численность учеников по областям

Рис. 4. Возрастной состав населения по районам Ивановской области

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

На рис. 4 демонстрируется одна из возможностей динамической визуализации полученных данных – построение круговых диаграмм. По результатам запроса о трудоспособности населения строится визуальное представление данных на карте. Анализ представления позволяет оперативно оценить ситуацию: в областном центре и близлежащих районах большинство населения – трудоспособного возраста, в то время как в отдаленных от центра районах основная часть населения – лица младше и старше трудоспособного возраста.

Примеры использования

Каковы же перспективы использования такого аналитического инструмента? Прежде всего, это высокая “гибкость” работы с данными. Пользователь имеет возможность просматривать данные в любом направлении, выбирая требуемые измерения в качестве направляющих. Здесь уместно поговорить о решении задач сравнения. К примеру, пользователь может получить в одной таблице сравнительный анализ долей государственных и негосударственных образовательных ресурсов по выбранному показателю, информацию по городским и сельским школам, наконец, сравнить уровень образования в выбранных регионах. Отметим, что для получения сравнительной таблицы ему достаточно лишь сделать несколько точных движений мышью.

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

Довольно заманчивой оказывается перспектива проведения многоуровневого анализа, т.е. анализа на различных уровнях детализации данных. Эту возможность обеспечивает введение в структуру МБД иерархических измерений. Территориальные объекты, а также объекты образования находятся в одном списке, имеющем иерархическую структуру. Обладая огромным количеством данных по конкретным образовательным учреждениям (а одних школ в России порядка 70000), пользователь может видеть на экране лишь несколько чисел, соответствующих рассматриваемым показателям на самом высоком уровне иерархии – уровне федеральных округов. Такой подход предоставляет возможность проведения глобального анализа, т. к. на уровне федеральных округов представлены суммарные данные по всем регионам, входящим в округа. Если пользователю требуется более детальная информация, он имеет возможность раскрыть иерархию и “спуститься” до конкретного образовательного учреждения, получая при этом на каждом уровне суммарную информацию по объектам, входящем в состав рассматриваемого.

Использование картографической привязки данных не только повышает уровень визуализации данных, но в некоторых случаях способствует получению нового качественного представления о рассматриваемой ситуации. Наглядное отображение данных на географической карте чрезвычайно полезно при решении задач мониторинга. Построение карты-диаграммы в этом случае позволяет визуально выявить наличие “белых пятен” в данных. В системе предусматривается применение и других эффективных способов визуализации, таких как столбчатые и круговые диаграммы.

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

Однако использование рассматриваемой системы не ограничивается критическими ситуациями. На основе клиент-серверной архитектуры системы может быть создан класс рабочих мест для аналитиков и управленцев, которые могут иметь удаленный доступ к данным и решать штатные задачи по повышению эффективности управления системой образования. В число таких задач входит рассмотрение всевозможных вариантов развития отрасли (ответ на вопрос “Что если?”) с целью нахождения оптимального пути ее дальнейшего развития.

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

Серверная часть

Многомерная база данных (МБД) функционирует под управлением Oracle Express Server 6.2, который обеспечивает многопользовательский удаленный доступ к соответствующим образом структурированным данным, хранящимся в МБД. Создание структуры МБД сводится к определению множества измерений и показателей (создание витрины данных). Структура витрины данных в Oracle Express может быть организована с помощью клиентского приложения Express Administrator. После подключения к серверу Oracle Express администратор МБД имеет возможность визуально определить измерения (Dimension) и показатели (Variable). После определения списка измерений требуется задать их значения. Если значений у измерения не много, например, измерение State_type (тип собственности) имеет всего два значения – государственное \ негосударственное, можно ввести их вручную (Edit Values). Для измерений, содержащих существенное множество значений, а также для импорта данных из реляционной базы данных в кубы, приходится применять специальные загрузочные программы, написанные на языке Express. Express Administrator позволяет выполнять как отдельные команды языка Express (Express Command), так и целые программные блоки (Program).

Приведем пример программы на языке Express, с помощью которой загружаются значения измерения fed_subj_region – списка территориальных объектов начиная от федеральных округов и заканчивая конкретными образовательными учреждениями. Данные загружаются из реляционной базы данных Oracle Database в многомерную базу данных Oracle Express. Т. к. измерение имеет иерархическую структуру, в реляционной базе данных соответствующая таблица имеет три столбца: oid - идентификатор объекта, name – наименование объекта и parent_id – идентификатор иерархии.

'Подключаемся к РБД Oracle
sql.dbms = 'oracle'
sql connect 'login/pass@ConnectString'
show 'connection opened successfully'

'определяем текстовую переменную
variable oid text

'определяем курсоры для загрузки данных
sql declare fs_db cursor for -
select oid, name, parent_id from object

sql declare fsid_db cursor for -
select oid from object

show 'loading regions'

'загружаем идентификаторы
sql open fsid_db
trap on err1 noprint
while sqlcode eq 0
do
sql fetch fsid_db into :oid
maintain fed_subj_region add oid
doend

err1:
sql close fsid_db

'загружаем данные в соответствии с иерархией
sql open fs_db
show 'cursor opened'
while sqlcode eq 0
do
sql fetch fs_db into :fed_subj_region :eofe.longlabel :eofe.parent
doend
sql close fs_db
show 'complete'

'завершаем соединение
sql disconnect
show 'connection closed'

Показатели заполняются аналогично. После окончания процедуры заполнения базы данными необходимо произвести подсчет агрегатных сумм в узлах пересечения значений измерений (операция rollup). После организации витрины данных и загрузки данных из таблицы фактов в МБД, данные уже доступны для анализа с помощью клиентского средства Oracle Express Analyzer. Однако такой анализ может выполнить лишь “продвинутый” пользователь. Для работы с Analyzer требуются определенные навыки, которые едва ли станут получать аналитики и управленцы. У них, скорее всего, просто не будет на это ни времени, ни желания. Правда, в Analyzer предусмотрен визуальный механизм создания т. н. “брифингов” – демонстрационных приложений для работы с МБД, но создавать эти брифинги должен опять-таки “продвинутый” пользователь и, естественно, ему на это требуется время. Кроме того, функциональность Analyzer ограничивается возможностью просмотра данных и некоторыми методами визуализации. Поэтому, если мы ставим задачу создания серьезного интегрированного аналитического приложения, для использования которого не требуется привлечение дополнительного персонала, приходится обратиться к более мощному средству из пакета Oracle Express – Express Objects.

Клиентская часть

После первого запуска Express Objects выдает ошибку “xobjects.ini is missing or invalid“ и закрывается. Спастись от этого можно копированием файла xpobsres.enu в xpobsres.rus. Ну вот, Express Objects запущен, можно подключиться к МБД и создать новый проект. Создание клиентского приложения начинается с разметки основной формы – рабочего окна приложения. В нашем случае оно будет разделено на две основных части. Левую половину окна будет занимать изображение географической карты России и средства работы с ней. В правой части будут представлены показатели, т. е. сами числовые данные, полученные с сервера МБД. Назовем условно эти функциональные блоки “Карта” и “База” соответственно. Рассмотрим эти блоки, а затем механизмы их динамической связи подробнее.

Карта

Для работы с картой нам понадобится OLE-компонент (Object Linking and Embedding – технология связывания и внедрения объектов), предоставляемый компанией MapInfo. После инсталляции продукта MapInfo MapX 5.0 можно внедрить компонент MapX в среду Express Objects в виде OLE-объекта (Edit->Install). После внедрения компонента он появится в списке доступных объектов на панели инструментов (ToolBox). Теперь его можно смело включать в разметку окна основной формы.

Сама карта России в рассматриваемом приложении имеет формат MapInfo и состоит из 12-ти слоев, в число которых входят слои, соответствующие иерархии территориальных объектов в базе данных, а также слои с гидрографическими и дорожными объектами. Слой карты представляет из себя набор картографических объектов (полигонов, линейных, точечных объектов) и таблицу, в которой каждая строчка соответствует объекту этого набора. Также объекту может соответствовать несколько строчек в таблице. Для создания однозначности соответствия в этом случае желательно выполнить операцию “Join” в редакторе MapInfo. Таблица, соответствующая слою, может иметь произвольное количество столбцов. Добавление \ удаление столбцов таблицы осуществляется также посредством редактора MapInfo. Столбцы таблицы играют ключевую роль при выполнении операций геокодирования.

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

База

Вторую половину окна занимает объект “таблица” (Table). В таблице отображается срез гиперкуба данных по выбранным значениям измерений. Над таблицей находится меню выбора показателя (куба данных), оформленное в виде выпадающего списка (“ComboBox”). Пользователь имеет возможность выбора необходимого для анализа показателя. При этом в таблице отображается срез выбранного показателя по указанным значениям измерений.

После помещения объекта “Table” в окно проекта, определения его свойств и запуска приложения таблица становится доступной для выполнения пользовательских операций. Пользователь имеет возможность разворота \ свертки иерархий, смены измерений для построения сечения, выбор конкретных значений измерений и т. п. Эта функциональность уже реализована средствами Express Objects и становится доступной при внедрении объекта “Table” в проект. С каждым действием пользователя, относящимся к объекту “Table” ассоциировано событие, после обработки которого управление передается в функциональный модуль. Перед рассмотрением основных процедур функционального модуля остановимся на модуле инициализации.

Модуль инициализации

Свойства объектов можно задавать, используя меню Properties, принадлежащее каждому объекту, однако, автор настоятельно рекомендует создать программный модуль инициализации свойств объектов, который будет запускаться при каждом запуске программы. Это позволит избежать в дальнейшем неприятных ошибок, связанных с сохранением свойств объектов при предыдущих запусках приложения. Программные модули представляют из себя наборы команд на языке Express Basic и создаются как отдельные объекты в проекте. Кроме того, каждый объект имеет собственный набор событий и может содержать код, соответствующий этим событиям и связанный со свойствами объекта. Тем, кто знаком с принципами визуального программирования это должно быть хорошо известно.

Приведем пример кода с пояснениями из модуля инициализации.

Sub Table_init

'объявляем переменные
dim Tbl as Table
dim dCube as new DataCube

'выбираем куб (показатель) “ученики”
dCube.addMeasures("PUPIL")
Set Page.Table1.DataCube = dCube

Set Tbl = Page.Table1

'строим сечение куба с использованием команд Express
call Tbl.SetSelection ("VV.PUPIL", "limit VV.PUPIL to all")
call Tbl.DefaultFormat("FED_SUBJ_REGION")
call Tbl.SetSelection ("FED_SUBJ_REGION", "LIMIT FED_SUBJ_REGION TO '1', '2', '3', '4', '5', '6', '7'")
'вращаем куб
call Tbl.Rotate(dcROSwap, "FED_SUBJ_REGION", "EOS.YEAR")
call Tbl.Rotate(dcROSwap, "FED_SUBJ_REGION", "VV.PUPIL")

'определяем свойства таблицы
Tbl.ShowDimensionBar = 0
Tbl.SuppressRows = 3
Tbl.CellMinWidth = 1050
Tbl.CellMaxWidth = 1050
Tbl.EnableSizing = No

end sub

После выполнения данной процедуры в таблице окажутся данные из МБД, соответствующие показателю “Ученики”, причем строки будут соответствовать территориальным объектам – федеральным округам, а столбцы – разбиению учеников по классам. Сделаем эту форму представлением “по умолчанию”. В окне определим кнопку (Button), при нажатии на которую происходит обращение к этой процедуре и, следовательно, сброс к первоначальному представлению. Это поможет пользователю в случае, когда он “забредет” в поисках данных слишком глубоко.

Также в инициализационном модуле определяются свойства объекта Map (карта), а точнее, свойства слоев карты. Основным свойством слоя, помимо его цвета, является величина, определяющая видимость слоя на определенном масштабе. На небольших масштабах, например, когда мы видим на экране всю Россию в целом, видимым является только один слой – федеральные округа. Отображение других слоев в этом случае не имеет смысла, т. к. различить более мелкие объекты на таком масштабе практически невозможно. Они сливаются друг с другом и принимают вид “грязи”. При увеличении масштаба становятся видимыми слои с более высокой детализацией (регионы, областные центры, реки, дороги, города средней величины и т. д.), в то время как слои с низкой детализацией исчезают.

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

Функциональный модуль

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

На программном уровне этот механизм реализован следующим образом. После выделения пользователем географического объекта в таблице с данными объект “Таблица” генерирует событие “AfterClick”, результатом обработки которого является передача управления соответствующей процедуре в функциональном модуле. Процедура анализирует параметры, передаваемые при вызове, и выполняет последовательность команд, целью которых является поиск, центровка, масштабирование и отображение соответствующего территориального объекта на карте. В качестве параметра передается массив, содержащий идентификаторы выделенных территориальных объектов. Приведем код процедуры с пояснениями.

'База->Карта
Sub ShowOnMap (index() as string)

'определяем переменные
Dim ftr as object
Dim ftrs as object
dim Layer as object
dim x,y,z as long
dim Map as object
dim i, j as integer
dim id as string
dim lc as integer
dim lname as string

Set Map = Page.Map

'определяем кол-во объектов в массиве
lc = Ubound(index)
id = index (lc)

'если выбран один объект, очищаем предыдущую выборку
if lc = 1 then
Map.Layers.ClearSelection
call clear_data
end if

z = Map.Zoom

'определяем слой, соответствующий выбранному объекту
call define_layer (id, lname, z)

Set Layer = Map.Layers(lname)

'ищем объект на слое
Set ftr = Layer.Search("db_id = " + id)

'если объект обнаружен, добавляем его в селекцию
if ftr.Count > 0 then
Map.Layers("data").AddFeature ftr(1)
Layer.Selection.Add ftr(1)
else
msgbox "Объект на карте не обнаружен!"
exit sub
end if

'центрируем объект
x = Layer.Selection(Layer.Selection.Count).CenterX
y = Layer.Selection(Layer.Selection.Count).CenterY

'масштабируем карту в соответствии со свойствами слоя
Map.ZoomTo z,x,y

End Sub

В случае, когда пользователю удобнее идти от карты к базе (навигация по карте), срабатывает механизм обратного взаимодействия. В распоряжении пользователя имеется несколько инструментов работы с картой, в число которых входят инструменты изменения масштаба, а также инструмент выбора географического объекта. При использовании последнего выбранный объект с соответствующей строкой данных немедленно отображается в таблице. Возможен также выбор группы объектов. Таким образом, пользователь имеет возможность визуально отобрать несколько территориальных объектов и продолжить работу с ними в окне базы данных. Рассмотрим программный код процедуры взаимодействия Карта -> База.

'Карта->База
Sub ShowInTable (index() as string)

'определяем переменные
dim id as string
dim Tbl as Table
dim lc as integer
dim i as integer
dim lmt as string
dim ftr as object
dim Layer as object

Set Tbl = Page.Table1

lc = Ubound(index)

'формируем команду Express для выбора территориальных объектов
lmt = "LIMIT FED_SUBJ_REGION TO "

for i = 1 to lc
if index(i) <> "" then
id = index(i)
lmt = lmt + "'" + id + "', "
end if
next

lmt = Left(lmt, Len(lmt)-1)

'выполняем команду для объекта “Таблица”
call Tbl.SetSelection ("FED_SUBJ_REGION", lmt)

End Sub

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

При реализации этого механизма на программном уровне автор столкнулся с проблемой, которую не удалось преодолеть стандартными методами языка Express Basic, а именно, невозможностью передачи данных из таблицы напрямую в множество данных (Dataset) слоя карты. Поэтому пришлось прибегнуть к технической “хитрости”, незаметной для глаз пользователя, однако требующей несколько, на первый взгляд, лишних строчек кода и небольшого дополнительного пространства на жестком диске. Идея заключается в создании дополнительного слоя, используемого только для хранения данных. Рассмотрим код процедуры.

'Тематическое картографирование
Sub DrawOnMap (index() as string)
'определяем переменные

Set Tbl = Page.Table1
Set Map = Page.Map
Map.Datasets.RemoveAll

lc = Ubound(index)

'определяем объект DataSet
Set ds = Map.Datasets.Add(6, Map.Layers("data"))

Set flds = ds.fields

NumCols = Tbl.TotalCols
NumRows = Tbl.TotalRows

'подготавливаем массив для хранения данных, полученных из таблицы
redim array (1 to lc, 1 to NumCols)

'загружаем данные из таблицы в массив
for k = 1 to lc ' over index
for i = 1 to NumRows
if Tbl.GetDimValues(vwOCDataEdge,dcERow,i,"FED_SUBJ_REGION") = index(k) then
for j = 1 to NumCols
if IsNull(Tbl.GetDataValue(i,j)) then
array(k,j) = 0
else
array(k,j) = CSng(Tbl.GetDataValue(i,j))
end if
next
end if
next
next

'выбираем все объекты слоя с данными
Set ftrs = Map.Layers("data").AllFeatures

'открываем доступ к слою с данными
Map.Layers("data").BeginAccess(1)

'записываем данные из массива в слой
For i=1 to ftrs.count
Set rvs = ds.RowValues(ftrs(i))
For j=1 to NumCols
rvs(j).Value = array(i,j)
Next
ftrs(i).Update 1,rvs
Next

'закрываем слой
Map.Layers("data").EndAccess

'определяем тип диаграммы
dtype = Page.ComboBox2.ListIndex

Map.Layers.ClearSelection

'определяем объект Theme
Set tm = ds.Themes.Add(dtype, flds)

'определяем название измерения
call define_dname (dname)

set sel = Tbl.GetSelection(dname)

'определяем значения измерения для отображения в легенде
strg = sel.GetValues(dimLBLLong)

'создаем легенду
tm.Legend.LegendTexts.AutoGenerate = False
For iCount = 1 to NumCols
tm.Legend.LegendTexts(iCount).Text = Trim(GetField(strg,iCount, Chr(10)))
Next

End Sub

Рассмотренные процедуры являются основным содержанием функционального модуля. На основе их удается реализовать основные идеи интеграции технологий GIS и OLAP в рамках единого программного комплекса. Дополнительные средства клиентского приложения, обеспечивающие “дружественность” пользовательского интерфейса и расширяющие его функциональные возможности реализуются на основе методов визуального программирования в среде Express Objects и, по мнению автора, не заслуживают детального рассмотрения.

Заключение

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

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

Литература

  1. Архипенков С. Я. Oracle Express OLAP// Москва, Диалог МИФИ, 2000.
  2. Oracle Express Release 6.2 Database Administration Guide.
  3. Oracle Express Release 6.2 Express Language Programming Guide.
  4. Express Basic Help Information. Oracle Express Objects Release 2.2.
  5. MapX 4.0 Developer Guide.
  6. Материалы сайта www.olap.ru

 Обсудить на форуме   Написать вебмастеру 

© 2001 Interface Ltd