Технология интеграции геоинформационных функций в информационные системы
Автор: Фереферов Евгений Сергеевич, Новицкий Юрий Александрович, Ружников Геннадий Михайлович, Хмельнов Алексей Евгеньевич
Журнал: Вестник Бурятского государственного университета. Философия @vestnik-bsu
Рубрика: Системный анализ и информационные технологии
Статья в выпуске: 9, 2012 года.
Бесплатный доступ
Статья посвящена проблемам расширения функциональных возможностей существующих информационных систем (ИС) за счёт встраивания геоинформационных функций. Предложен ряд инструментальных средств, автоматизирующих данный процесс.
Информационные системы, геоинформационные системы, инструментальные средства
Короткий адрес: https://sciup.org/148181267
IDR: 148181267
Текст научной статьи Технология интеграции геоинформационных функций в информационные системы
В информационных системах, ориентированных на управление территориальным развитием, как правило, используется информация, имеющая пространственную привязку (например, почтовые адреса, кадастровые номера). При этом в таких системах часто отсутствует геоинформационная составляющая. Применение ГИС технологий повышает наглядность представления информации, позволяет проводить пространственный анализ и как следствие позволяет повысить качество и обоснованность управленческих решений. Поэтому расширение функциональных возможностей существующих ИС за счёт интеграции в них ГИС-функций является актуальной задачей.
Для решения данной задачи существует несколько подходов: разработка ИС средствами ГИС (например, «Приложение БД» в ГИС «Панорама» [1]) или реализация функций ГИС в существующих АИС. В первом случае приходится реализовывать все функции существующей информационной системы средствами ГИС, по сути, создавая систему заново. При этом программисту может потребоваться освоение встроенных языков ГИС (например, Avenue для ArcView [2], MapBasic для Mapinfo [3]). Второй подход требует от разработчика знаний в области геоинформационных технологий, поскольку необходима реализация функций для работы с пространственными объектами, а также обязательное наличие исходных текстов существующей ИС.
Из вышесказанного можно сделать вывод, что интеграция геоинформационных функций в существующие ИС - задача трудоемкая. Поэтому актуальна разработка инструментальных средств, позволяющих автоматизировать интеграцию функций ГИС в существующие системы.
Картографический модуль
Для работы с цифровыми картами из внешних приложений авторами создан картографический модуль, реализованный в виде COM-сервера, к которому могут подключаться ИС-клиенты (возможно несколько сразу). Реализация модуля для работы с ГИС в виде COM-сервера дает ряд полезных свойств. Во-первых, при взаимодействии с несколькими приложениями-клиентами, картографический модуль является интегрирующей составляющей, позволяющей объединять информацию из различных информационных систем на уровне ГИС. Во-вторых, существует возможность средствами ОС Windows настроить запуск картографического модуля от имени пользователя, обладающего правами доступа к файлам карты, что позволяет исключить несанкционированное копирование файла электронной карты. В режиме «по умолчанию» СОМ-приложения запускаются под учетной записью текущего (запускающего) пользователя, но есть возможность при помощи утилиты dcomcnfg.exe настроить запуск СОМ-сервера под учетной записью указанного пользователя. Данная возможность позволяет наладить работу с файлами карт, доступ к которым текущему пользователю запрещен.
Методы интерфейса приложения созданного картографического модуля позволяют вызывать окно для работы с цифровыми картами (рис.1) в формате ГИС «Панорама» [1], и обеспечивают выполнение ряда ГИС-функций. Применение данного модуля при разработке или модернизации существующих ИС позволяет избежать необходимости написания функций для работы с цифровой картой. В картографическом модуле уже реализованы следующие ГИС-функции:
-
• масштабирование,:
-
• перетаскивание,
-
• получение информации по объекту карты (семантика и метрика объекта),
-
• создание новых объектов,
-
• создание пользовательских слоев,
-
• поиск объектов на цифровой карте по адресу (функция «Адресный план»).
Для взаимодействия с ИС-клиентами библиотека типов созданного COM-сервера содержит описание двух интерфейсов: lApplication и IClient. lApplication содержит функции для работы с цифровыми картами, реализованные в картографическом модуле, a IClient - функции, вызываемые картографическим модулем для передачи или получения информации из программы-клиента, которые должны быть реализованы на клиенте соответственно. Рассмотрим данные интерфейсы более подробно.

Рис. 1. Взаимодействие ИС с картографическим модулем
Методы интерфейса lApplication:
function SetClientInt(const Clientlnt: IClient): HResult - функция передачи клиентского интерфейса.
function AddClientButton(Tg: Integer; const Hnt: WideString; SN: Integer): HResult - функция позволяет создать в окне картографического модуля кнопку с номером (Tg), подписью (Hnt), при нажатии которой в приложение-клиент будет передано значение семантики с номером SN выбранного объекта. Созданным клиентским кнопкам может быть задан внешний вид.
function ShowObjByAddr(const S: WideString; const H: WideString): HResult - функция позволяет искать объекты цифровой карты, у которых семантика «Улица»=8, «Дом»=Н. При этом объекты удовлетворяющие запросу выделяются цветом и перемещаются в центр окна (происходит фокусировка).
function ShowObjsByAddrs(const Addrs: WideString; L: Integer): HResult - Функция поиска объектов на карте по списку адресов вида «Улица!, Дом!, Улица2, Дом2..... УлицаД ДомЬ».
function ShowObjByID(ID: Integer): HResult - Функция поиска объектов на цифровой карте по уникальному ключу ID объекта.
function ShowObjsBySemNum(SN: Integer; const SV: WideString): HResult - функция позволяет искать объекты цифровой карты, у которых семантика с номером SN имеет значение SV.
function AddObjsToList(IDL: Integer; IDOBJ: Integer; SelAppend: Integer; Color: Integer): HResult - функция добавляет в список выборки объект с номером пользовательской карты IDL, уникальным ключом IDOBJ и цветом выделения Color. При этом, если параметр SelAppend=l, то список выборки будет создан заново иначе объекты будут добавляться в существующий список. Для отображения списка объектов необходимо вызвать function ShowSelList: HResult.
Методы интерфейса IClient:
procedure GetObjInfoPress(Tg: Integer; const VL: WideString) - процедура для обработки получаемых значений семантики VL выбранного объекта карты при нажатии пользовательской кнопки с номером Tg в картографическом модуле.
function GetFieldValByNameClnt(const FldName: WideString): WideString - функция для получения значения из поля FldName таблицы. Данная функция может вызываться картографическим модулем при построении отчётов, содержащих связанную с объектом карты информацию из БД приложения-клиента.
procedure ShowMapObjDBInfo(hL: Integer; hObj: Integer) процедура для поиска и отображения в приложении-клиенте информации связанной с выбранным объектом карты.
Описанные процедуры и функции в большинстве случаев достаточны для решения задачи взаимодействия ИС-клиентов с картографическим модулем.
Модуль формирования отчетов по карте
Для поддержания возможности создания отчетов, содержащих информацию об объектах цифровых карт, авторами был разработан генератор отчетов, реализованный в виде динамически подключаемой библиотеки (dll), взаимодействующей с картографическим модулем. В основе данного построителя лежит технология создания отчетов с использованием метаописаний структур БД и шаблонов в MS Word, содержащих метки форматирования данных[4], впервые апробированная при создании генератора отчетов для системы ГеоАРМ[5].
Изначально генератор был разработан для построения отчетов с использованием метаописаний структур баз данных. При вызове генератора из метаописания ему передавалась информация о соединении с БД, файле-шаблоне и таблице или представлении (таблице со значениями полученными по ссылкам), для записей из которых нужно построить отчет. В метаописании таблиц (представлений) могла содержаться информация о связях типа «Мастер-Детали», что позволяет наладить вывод данных из таблиц-деталей.
При создании отчетов по объектам цифровой карты, семантика объекта воспринимается генератором отчётов как поля записи таблицы, а метрика как детали. При этом именами полей выступают имена соответствующих семантик.
В процессе подготовки отчета происходит нахождение меток в тексте шаблона, после чего на основании параметров метки происходит вставка данных. Шаблоны отчётов содержат метки следующего вида:
<#[Вид данных] N=Hmh (Формат)>, где
[Вид данных] = {FV - значение семантики; IMG - изображение фрагмента карты; DETAIL - значения из метрики};
N=Hmh - имя соответствующей семантики, из которой будут браться данные;
(Формат) - необязательный набор параметров, для каждого вида данных свой. Например, для склонения подставляемых значений можно указать падеж (для реализации данной функции была применена библиотеки padeg.dll[6]). Имя может иметь вид: N = «л» «Имя таблицы» «.» «Имя поля» - тогда данные будут подставляться из соответствующего поля и таблицы приложения клиента.

Рис. 2. Отчёт с объектами цифровой карты
Кроме того в отчёте может быть опубликован объект цифровой карты с помощью примитивов графики MS Word (рис. 2). Для этого в шаблоне документа должны присутствовать объекты MS Word: полотно с именем «Границы», задающее область рисования, автофигура с именем «Центр», задающая центр рисования объекта, а также автофигуры, отвечающие за служебные подписи.
Заключение
Описанные выше инструментальные средства позволяют интегрировать функции для работы с векторными картами в формате «Панорама» в приложения^ где такая работа не была ранее поддержана. Реализация картографического модуля в виде COM-сервера позволяет регламентировать работу с электронной топоосновой на уровне политик безопасности ОС Windows, при этом исключив несанкционированное копирование файлов карт. Модуль публикации позволяет создавать отчётные формы, содержащие информацию об объектах цифровых карт. Разработанные инструментальные системы были внедрены в МУП Бюро технической инвентаризации г. Иркутска.