Доступный контроль

(опыт применения MapControl в приложении MS Access)

Вступление

Задача

Гис-Модуль

закладка Каталог

закладка Объекты

закладка Легенда

Заключение

Примеры

 

 

 

3-2-1

Стремительное развитие технологий диктует нам использование трехуровневой архитектуры программного обеспечения. Уже недостаточно взять с полки атлас и неторопливо изучать его страница за страницей – вынь-да-положь 3-D модель.

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

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

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

Таковы основные мотивы использования объекта MapControl, в рассматриваемом ниже примере.

Задача

            Для одного из правительственных департаментов была разработана база данных под управлением СУБД Access, по мониторингу хода реализации федеральной целевой программы (ФЦП). Основной упор был сделан на финансовом  контроле  прохождения денежных средств при  строительстве или модернизации объектов.

Особенностью ФЦП является управление 588 разнородными и разномасштабными  объектами, расположенными на территории 13 Субъектов Российской Федерации. Часть объектов расположена в крупных городах и населенных пунктах, часть из них привязана к различным месторождениям, трассам, участкам  линейной инфраструктуры, местоположение которых не так очевидно. Полноценный контроль за ситуацией потребовал наличия оперативной карты объектов Программы с указанием разнообразной информации, описывающей ход ее реализации. Карта, как наиболее распространенный способ осмысления пространственной информации, позволила наглядно представить необходимые данные в различных срезах: от федерального до районного и даже до масштаба  конкретного объекта.

От разрабатываемого  ГИС-модуля требовалось решение следующих основных задач:

ГИС-модуль

ГИС-модуль представляет собой стандартную экранную форму, включающую в себя следующие основные элементы:

1-     область отображения карты

2-     панель инструментов ГИС-модуля

3-     набор функциональных закладок «Каталог», «Объекты», «Легенда»

Область отображения карты  - встроенный ActiveX объект MapControl позволяет визуализировать любую из доступных карт и работать с ней, используя широкий спектр инструментов ГИС-модуля


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

Рис.6 Инструменты работы с картой

Инструмент

Основные функциональные возможности

Добавить слой. Добавление к карте произвольного слоя из файла

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

(Рис. 7)

Удаление слоя из карты

Изменение масштабов карты

Свободное панорамирование карты с сохранением масштаба

Показать все. Отображение всех элементов карты

Восстановление предыдущего(последующего) вида

Печать на принтер PostScript

Экспорт в файл графического формата (jpg, bmp)

Отмена выделенных элементов карты

Выделение объектов рамкой

Идентификация выделенных объектов

Идентификация одного объекта

Вызов формы пространственного и атрибутивного запроса объектов карты

Формирование отчета в таблицу формата Excell.9

Измерение расстояния на карте

Обновление карты


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

Поскольку тематические закладки – основа данного модуля, остановимся на них чуть подробнее.

Закладка «Каталог»

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

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

Использование MapControl позволяет:

Ø     загружать уже подготовленные карты из *.mxd  документов,

Ø     формировать их «налету» из сохраненных файлов легенды (*.lyr)

Ø     динамически создавать необходимое представление.

Одно из ограничений, накладываемых MapControl- это невозможность сохранять mxd-файлы, поэтому пользователь вынужден «есть, что дают». Но если «блюдо» было приготовлено профессиональным «кулинаром-картографом», то оно доставит только истинное наслаждение.

Однако хочется перца и соли по вкусу. Как каталог состоит из набора карт, так и сами карты – набор тематических слоев (мы сейчас не говорим о зарамочном оформлении и т.п.). Исходя из этого, мы расширили пользовательские возможности создавать и загружать карты из файлов легенды (*.lyr) налету. Такое решение имитирует возможности ArcMap, и даже создает одно небольшое преимущество: можно исправить что-то в одном из сохраненных файлов легенды, и это немедленно отобразится во всех картах, использующих его. Кроме того, lyr-файлы сохранять можно.

С этой целью была разработана небольшая утилита, позволяющая манипулировать набором слоев, сохраняя вновь создаваемые комбинации в нескольких связных вспомогательных таблицах, хранимых в той же базе данных. Именно эти виртуальные «карт-наборы» и используются при построении каталога. Последний также храниться в таблице базы данных. Утилита предусматривает следующие функциональные возможности:

-        Создание новой карты

-        Редактирование характеристик существующей карты

-        Подключения новых слоев в информационную систему

-        Редактирование основных характеристик слоя

-        Компоновка карты из доступных слоев

-        Описание структуры параметрических запросов к слою

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

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

Рис. Редактирование слоев

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

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

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

Закладка «Объекты»

Если каталогизирование является достаточно общей задачей и может быть использовано в любой системе, то работа с объектами требует настройки конкретно для каждого случая использования ГИС-модуля.

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

-        поиск по названию объектов

-        краткая информация по объекту

-        сложный фильтр объектов Программы

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

Закладка «Легенда»

На закладке «Легенда» при загрузке карты формируется структура слоев карты с условными обозначениями, позволяющая интерактивно управлять видимостью того или иного слоя. Для изменения условных знаков или цветовых схем используется вызов «Управление слоями» из панели инструментов карты. Поскольку на момент разработки ESRI не предоставлял своего объекта для отображения легенды, нами был использован общедоступный контроль AOTOC.ocx ( http://arcscripts.esri.com/details.asp?dbid=12119 ). За что его автору Brian Flood большое спасибо. Сейчас есть возможность использовать объект TOC от ESRI, но при наличии соответствующей лицензии.

Заключение

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

Хотелось бы предупредить о недопустимости использования библиотеки DAO  при работе с MapControl, а только ADO. Первая приводит Access в ступор, после которого выход из приложения не возможен. Только уничтожение процесса извне решает данную проблему. К великому сожалению, длительная дискуссия, развернутая на сайте ESRI в течении 2-х лет привела только к постановке данного «бага» в список известных проблем.

            В заключении хотелось бы поблагодарить компанию «Дата+» за мастерское использование в кратчайшие сроки малой толики своих интеллектуальных возможностей, а также всей мощи MS SQL Server, IIS, ArcIMS, Reporting Server и еще чего-то, для развития аналогичного приложения. Но дорожка-то была протоптана …

MitrichTools

P.S. Примеры карт

Пример легенды

Выбор буфером

Классификация картограммы

Сводные диаграммы по регионам

Среднемасштабная карта объектов