Юрий Паршуков, эксперт DATA+
С выпуском ArcInfo 8.1 разработчики ГИС могут использовать новую COM-технологию разработки ArcObjects, которая предоставляет возможность использования хорошо документированной модели данных с внедряемыми компонентами. ArcObjects позволяет решать широкий круг задач: от настройки и расширения ArcInfo до построения новых ГИС-приложений. Поскольку Visual Basic for Applications (VBA) — среда разработки, поставляемая с ArcInfo 8, то он используется наиболее часто. Однако ArcInfo 8 может быть настроена при помощи любого языка, поддерживающего технологию COM, например, Visual C++, VJ++ или Delphi.
ArcObjects — это платформа разработки для таких модулей ArcGIS, как ArcMap, ArcCatalog и ArcScene. Программные компоненты ArcObjects охватывают полный диапазон функциональных возможностей, доступных в ArcInfo и ArcView для разработчиков программ.
ArcObjects — инфраструктура, которая позволяет Вам создавать специфичные для данной предметной области компоненты из других компонент. Компоненты ArcObjects взаимодействуют, чтобы обслужить каждую из функций управления данными и функции представления карты, общие для большинства ГИС приложений. ArcObjects обеспечивает инфраструктуру для настройки приложений, которая позволяет Вам сконцентрироваться на обслуживании специфических потребностей ваших клиентов.
ArcObjects — это набор компонентов, включающий более 1200 объектов, которые могут быть использованы для настройки, расширения и построения ГИС приложений. Более детальное рассмотрение объектной модели ArcMap познакомит вас с некоторыми фундаментальными компонентами общей объектной модели.
Структура ArcObjects
ArcObjects построен с использованием технологии Модели Компонентных Объектов фирмы Microsoft (COM — Component Object Model). Поэтому имеется возможность расширять состав ArcObjects путем написания COM- компонент, используя любой COM- совместимый язык разработки. Вы можете расширять любую часть архитектуры ArcObjects точно так же, как это делают разработчики ESRI.
Чтобы понять Модель Компонентных Объектов (все COM-основанные технологии), важно понять, что это не объектно-ориентированный язык, протокол или стандарт. Модель Компонентных Объектов — больше чем просто технология; это — методология разработки программ. Модель Компонентных Объектов определяет протокол, который соединяет один программный компонент или модуль с другим. Используя этот протокол, можно строить программные компоненты многократного использования, которые могут быть динамически заменяемы в распределенной системе. Модель Компонентных Объектов также определяет модель программирования, известную как интерфейсно-основанное программирование. Компоненты облегчают программное многократное использование, потому что они — отдельные стандартные блоки, которые могут легко быть собраны в большие системы.
Модель Компонентных Объектов определяет объектную модель и требования программирования, которые дают возможность объектам COM взаимодействовать с другими объектами COM. Эти объекты могут быть в пределах одного процесса, в различных процессах, или даже на удаленных машинах. Они могут быть написаны на разных языках и, возможно, разработаны очень разными способами.
Настройка ArcGIS Desktop
Наиболее общий способ, с помощью которого разработчики настраивают настольные приложения ArcGIS — это использование Visual Basic для Прикладных программ (VBA), который встроен в ArcCatalog и ArcMap.
С помощью VBA Вы можете усиливать структуру приложений, которая уже существует в ArcMap и ArcCatalog, для общего управления данными и задач представления карты, и расширять ArcGIS с помощью ваших собственных пользовательских команд, инструментальных средств, меню и модулей.
Используя VBA внутри ArcGIS Desktop, Вы можете удовлетворить большую часть ваших пользовательских потребностей при относительно небольших затратах на разработку. Опытные разработчики в дальнейшем могут расширять ArcGIS Desktop посредством добавления заказных слоев карты, рендерингов, страниц свойств (атрибутов), и источников данных.
Для создания специализированных приложений разработчики с достаточным опытом могут не использовать прикладную структуру ArcMap и ArcCatalog, а вместо этого формировать свои собственные целевые приложения. Управление картой обеспечивает хорошую точку отсчета, позволяя обращаться к остальным членам семейства ArcObjects.
Более подробные сведения обо всем, что Вы должны знать относительно применения COM-технологии, VBA, VB, Visual C++, и ATL (Active Template Library) к разработке ArcObjects, содержится в документации ESRI и в других ресурсах для разработчиков, например, по адресу: http://www.esri.com/arcobjectsonline
НЕКОТОРЫЕ РЕСУРСЫ ДЛЯ РАЗРАБОТЧИКОВ
Диаграммы Классов
Получение справки по объектной модели важно для успешной работы с ArcObjects. Диаграммы классов наиболее полезны при просмотре на начальной стадии обучения в напечатанной форме. Это позволяет разработчикам оценить полную структуру объектной модели, предоставляемой через ArcObjects. Полезно ознакомиться и с PDF файлами, включенными в поставку программного обеспечения. Они обеспечивают поиск — Вы можете использовать блок диалога Search в Acrobat Reader, чтобы быстро найти нужные классы и интерфейсы.
Программы просмотра объектов
В дополнение к диаграммам классов, содержащихся в PDF файлах, информация библиотек типов может быть просмотрена, используя ряд программ просмотра объектов. Visual Basic имеет встроенную программу просмотра объектов; OLEView (утилита от Microsoft) также отображает информацию библиотеки типов. Для просмотра объектов из библиотеки ESRI Object Library рекомендуется программа ESRI object viewer. Информация относительно классов и интерфейсов может быть отображена в формате Visual Basic, Visual C++, или в виде объектной диаграммы.
Программы просмотра объектов могут рассматривать coclasses и классы, но не могут использоваться, чтобы рассмотреть абстрактные классы. Абстрактные классы можно только просматривать на объектных диаграммах, где их использование должно исключительно упростить модели.
Справка по компонентам
Все интерфейсы и coclasses подробно документированы в справочном файле по компонентам. Это откомпилированный файл HTML, который можно посмотреть отдельно или при использовании интегрированной среды разработчика (IDE).
Дополнительную информацию можно почерпнуть из входящей в комплект ArcGIS книги ESRI «Изучение ArcObjects» (Exploring Arcobjects), которая рассматривает каждую из этих подсистем более детально. Каждая глава в книге посвящена отдельной подсистеме и включает обсуждение по каждому объекту и интерфейсу подсистемы с многочисленными примерами кода, показывающего их использование. Диаграмма модели объектов ArcGIS иллюстрирует упрощенные объектные модели для каждой подсистемы в ArcObjects и является хорошей отправной точкой для знакомства с каждой из подсистем.
Рис. 1.
Рис. 2.
Рассмотрим краткую информацию по подсистемам ArcObjects. Каждая подсистема имеет описание ее объектной модели в виде файла PDF. Упрощенная структура некоторых подсистем представлена на рис. 1, 2.
3D Analyst Extension
Компоненты в дополнительном модуле 3D Analyst обеспечивают структуру для трехмерной визуализации и моделирования поверхности.
Application Framework
Объекты в Прикладной Структуре позволяют Вам программно настраивать интерфейс пользователя в ArcMap и ArcCatalog.
ArcCatalog
Расширяемая архитектура ArcCatalog дает возможность разработчикам расширить объектную модель, чтобы добавлять пользовательские объекты и пользовательские представления в приложение.
ArcMap
Эти объекты обеспечивают основные функциональные возможности для приложения ArcMap и используются для отображения и управления документами карты.
ArcMap Editor
Подсистема Редактора ArcMap содержит все объекты, принадлежащие к этому расширению. Эти объекты облегчают редактирование покрытий, шейп-файлов и баз геоданных.
Display
Объекты Дисплея выполняют основные функции для показа символики карты, отображая графическое редактирование объектов карты, выполняя преобразования координат и управляя экраном дисплея.
Geocoding
Объекты Геокодирования обеспечивают функциональные возможности для геокодирования адресов, также как для рассмотрения и поддержания результатов геокодирования. Эти объекты также обеспечивают функциональные возможности для создания, управления, и поддержки служб геокодирования.
Geodatabase
Объекты Базы Геоданных обеспечивают способность создавать и управлять данными в базах геоданных. Эти объекты также обеспечивают механизмы для доступа и выполнения запросов к географическим данным, сохраненным в базах геоданных, шейп-файлах и покрытиях.
Geometry
Геометрия — подсистема, которая обрабатывает геометрию, или форму, векторных данных, сохраненных в классах векторных данных или других графических элементах.
IMS
Объекты IMS обеспечивают функциональные возможности для соединения с серверами ArcIMS и получения доступа к службам изображений или векторных данных ArcIMS. Также, через эти объекты разработчик может обращаться к слоям изображений/векторных данных и их свойствам. Примером такого свойства может быть символика уровня.
Network
Объекты Network обеспечивают функциональные возможности для создания, управления, и операций анализа с использованием пространственных сетей. Имеются также объекты для создания пользовательских решений и настройки сервисного расширения Сетевого анализа.
Output
Печать и экспорт файла выполняется через объекты в этой подсистеме вывода.
Raster
Объекты Raster обеспечивают доступ к управлению растровыми данными и на диске, и в памяти. Эти объекты также обеспечивают средства для классификации растровых данных и управления визуализацией этих данных.
Spatial Reference
Подсистема Пространственная Ссылка — набор компонентов, которые обеспечивают интерфейсы к различным функциональным возможностям пространственных ссылок.
StreetMap USA Extension
Объекты дополнительного модуля StreetMap USA расширяют основные объекты ArcGIS, чтобы облегчить доступ к источникам данных StreetMap как к классам векторных данных.
Пример использования ArcObjects
Рассмотрим пример использования объектов ArcMap.
По заказу одного из объединений было разработано приложение, отображающее данные экологического мониторинга состояния угольных шахт. Большая часть программ была написана на VBA в среде ArcMap. Блок вывода информации на печать был реализован на языке Visual Basic 6.0. Вся информация по экологическому мониторингу хранится в виде таблиц в базе данных Access. Она включает в себя постоянную информацию (о пунктах наблюдения, таблицы ПДК химических веществ, константы гидродинамического режима и т.п.) и переменную информацию — данные замеров в пунктах наблюдения. Для поддержания таблиц в актуальном состоянии и ввода новых данных разработан ряд форм, облегчающих диалог с пользователем. С их помощью осуществляется выборка данных по конкретному пункту наблюдения (ПН), по химическому веществу и заданному интервалу времени.
Для управления работой программ на панель инструментов ArcMap с помощью команды CUSTOMIZE из меню TOOL добавлен ряд кнопок (UIControls), инициирующих следующие функции:
- отображение на карте пунктов наблюдения в виде значков различного цвета (в зависимости от степени превышения ПДК) и формы (в зависимости от типа пункта наблюдения);
- динамическое отображение на карте в виде столбчатых диаграмм изменений заданного признака, начиная с определенной даты через заданный интервал времени. Диаграммы строятся для каждого пункта наблюдения указанного типа;
- Ввод данных новых измерений по любому пункту наблюдения и их редактирование;
- добавление нового пункта наблюдения в базу данных;
- удаление пункта наблюдения из базы данных;
- экспорт и импорт базы данных экологического мониторинга;
- работа с таблицами справочников;
- печать отчетных форм.
На панель TOOLS добавлена также управляющая кнопка (UIToolControl) для возможности идентификации пункта наблюдения с выдачей данных последних замеров по этому ПН. Пункт указывается посредством установки курсора мыши на значок, отображающий его на карте и нажатия левой кнопки мыши (аналогично команде Identify из стандартного Tools).
Для вывода печатных форм была разработана программа на Visual Basic 6.0, использующая при формировании результирующей таблицы Microsoft Excel. Все выходные данные для печати формируются и заносятся в таблицы программно, при этом используются объекты приложения Microsoft Excel. Программа компилируется в отдельную библиотеку DLL, которая связывается с добавляемой на панель инструментов пользовательской кнопкой.
Рис. 3.
Примерный вид приложения ArcMap, адаптированного под задачи пользователей, представлен на рис. 3.