150 likes | 408 Views
Глава 9. Разработка приложений с помощью ArcObjects ArcGIS. В этой главе: Как читать и интерпретировать диаграммы модели объекта ArcGIS Разработка расширений приложения: создание нового класса для расширения Разработка компонента стыкуемого окна
E N D
Глава 9.Разработка приложений с помощью ArcObjects ArcGIS
В этой главе: • Как читать и интерпретировать диаграммы модели объекта ArcGIS • Разработка расширений приложения: создание нового класса для расширения • Разработка компонента стыкуемого окна • Иллюстрация других примеров кода в среде VB и VBA • Вопросы для самопроверки • Контрольные вопросы и задачи
Как читать и интерпретировать диаграммы модели объекта ArcGIS • Диаграммная нотация и диаграммы компонентной модели ArcObjects, основаны на нотации Unified Modeling Language (UML), стандартной индустрии построения диаграмм для объектно-ориентированного анализа и проектирования. • Диаграммы модели объекта являются важным приложением к информации, которую Вы получаете при просмотре объекта. Среда разработки Visual Basic, или другая, перечисляет все классы и члены, но не показывает структуру или отношения этих классов. Эти диаграммы дополнят Ваше понимание компонентов ArcObjects
Ключ диаграммы модели объекта, показывающий типы ArcObjects и отношения между ними
Разработка расширений приложения: создание нового класса для расширения • Описание проекта • Этот раздел предназначен для разработчиков Desktop ArcGIS, кто хочет создать расширение. • Пример, используемый в этом сценарии, является простым расширением, который дает возможность активировать некоторые инструменты на существующей инструментальной панели. • Центром тяжести этого сценария является создание компонентов, которые включаются в каркас (framework), но не в какое-либо конкретное решение ArcObjects. • Концепции • Расширения снабжают разработчика мощным механизмом увеличения базовой функциональности приложения ArcGIS. Расширения могут предоставлять инструментальную панель с новыми инструментами, вызов и отклик на события, выполнять проверку корректности пространственных объектов и т.п.
Реализация интерфейсов расширения Теперь Вам нужно реализовать интерфейсы IExtension и IExtensionConfig в классе Extension. Самый простой способ сделать это - использовать Интерфейс Implementer add-in ESRI. Для справки о добавлениях (add-ins) см папку Add-Ins на закладке Contents в справочной системе ArcGIS Developer Help. • В VB6 нажмите, чтобы отобразить пустой класс Extension в окне кода. • Нажмите Add-Ins > ESRI Интерфейс Implementer. Отобразится диалог Интерфейс Implementer ESRI. • В диалоге нажмите Options и отключите Generate Обработчик ошибкиs item. • Нажмите IExtension в раскрывающемся меню Application. • Нажмите IExtensionConfig в нижнем окне и нажмите OK, чтобы закрыть диалог. • Интерфейс Implmenter ESRI добавляет команду Implements и stubs out все члены этих интерфейсов в окне кода. Он также добавит в проект соответствующие библиотечные ссылки, если они не существуют. • Если Вы не используете add-in, Вам придется вручную добавлять ссылки проекта, вводить команды Implements и вручную писать шаблон каждого члена интерфейса в окно кода.
Разработка компонента стыкуемого окна • VBA является идеальной средой моделирования, которая предоставляет средства для распространения настроек. В предыдущих разделах Вы могли видеть, что можете сделать настройки инструментальной панели и быстро разработать скромные приложения. Многие из примеров разработки, доступные с ArcGIS, являются просто фрагментами кода VBA и процедур, которые Вы можете копировать, восстанавливать и запускать в среде разработки VBA.
Что могут делать компоненты? • Все, что Вы можете делать в VBA, Вы можете делать с компонентом. Однако, обратное неверно, в чем и заключается одно из преимуществ использования своего компонента. Вы можете взять любые примеры руководства, которые видели до настоящего момента или любой из иллюстрированных примеров кода в приложениях и легко создать компонент, такой как команда или инструмент, используя один из языков разработки. В некоторых случаях Вам нужно сделать только малые изменения кода VBA, чтобы превратить его в компонент. • Например, если Вы работаете в Visual Basic 6, синтаксис почти идентичен VBA, требующий от Вас сделать минимальные изменения VBA и реализовать обязательные интерфейсы. • Важно повторить, что если Вы не намерены получать выгоды, предоставляемые компонентами, такие как использование кода в других документах или поставлять компонент другим пользователям, Вы можете продолжать делать Ваши настройки с VBA. В большинстве случаев эти разработки будут менее сложными и более быстрыми.
Описание проекта • Этот раздел предназначен для разработчиков Desktop ArcGIS, которые хотят создать стыкуемое окно в качестве компонента, который может быть внедрен в каркас приложения Desktop ArcGIS. • В этом сценарии стыкуемое окно будет содержать MapControl для отображения обзора слоев в текущем документе. Эта функциональность подобна стандартному окну Overview ArcMap, за исключением того, что окно Overview, созданное в этом сценарии, будет стыкуемым.
Стыкуемые окна • Стыкуемое окно является окном, которое может существовать в плавающем состоянии или быть пристыкованным к главному окну приложения. Таблица содержания (Table of Contents) в ArcMap и Дерево обзора (Tree View) в ArcCatalog являются примерами стыкуемых окон. • Стыкуемые окна создаются путем реализации интерфейса IDockableWindowDef внутри класса. Вы используете свойство ChildHWND на этом интерфейсе, чтобы определить, какие окна будут передавать дескриптор hWnd контролей таких как форма, Listbox и т.п.
Добавление ресурсного файла • Ресурсный файл для проекта содержит картинку, которая будет использоваться как значок кнопки для команды вызова стыкуемого окна Overview. • Нажмите правой клавишей в окне проекта и нажмите Add > Resource File. • В диалоге Open a Resource File просмотрите директорию \DeveloperKit\Samples\ Developer_Guide_Scenarios\ArcGIS_Desktop\OverviewDocWin и нажмите OverView DockWin.res. • Вы можете перейти к ресурсному файлу и изучить картинку.
Примеры иллюстрированного кода в среде VBA • Примеры иллюстрированного кода в данном разделе показывают основы программирования с компонентами COM в ArcObjects. Начните с запуска среды VBA в ArcMap или ArcCatalog и введите код. Пройдите пошагово код в отладчике VBA. Просмотрите рисунки в этом разделе и изучите связи между коклассами и интерфейсами. Внимательное чтение примеров в этом разделе дает Вам не только все важные концепции, нужные для разработки в ArcObjects, но и познакомит с самыми важными компонентами ArcObjects
Вопросы для самопроверки • Что такое абстрактный класс? Приведите примеры абстрактных классов в ArcGIS. Где можно просмотреть абстрактные классы? • Какие виды отношений существуют между классами? • Допускает ли VB множественное наследование? • Может ли объект быть одновременно и сервером и клиентом? • Могут ли два объекта иметь один и тот же интерфейс, но реализовать его по-разному? • Какой интерфейс по умолчанию используют объекты приложений ArcMap и ArcCatalog? • Для чего используются Категории компонентов? • В каком разделе системного реестра регистрируются классы?
Контрольные вопросы и задачи Задача 1. Значения ячеек растра • Напишите программу, которая отображает значения ячеек первого растрового слоя на карте. Отображаемые значения могут быть из одноканального или многоканального растра. Эти значения определяются в местоположении курсора мыши, когда пользователь перемещает мышь над растровым слоем. Значения будут отображаться в нижнем левом углу окна ArcMap. • Как обычно, сначала Вы создадите новую кнопку на инструментальной панели и добавите к ней исходный код. Задача 2. Генерализация растровых данных • Используйте ArcObjects для реализации задачи 3 Главы 6: генерализации данных с помощью последовательности инструментов: Reclassify, Majority Filter, Boundary clean, Region Group, Set Null, Nibble.
Задача 3. Непространственные запросы • Выполните программно в любой удобной для Вас среде разработки все атрибутивные запросы, приведенные в контрольных задачах главы 2 Задача 4. Пространственные запросы • Выполните программно в любой удобной для Вас среде разработки все пространственные запросы, приведенные в контрольных задачах главы 2 Задача 5. Создание компонента • Напишите свой собственный компонент, склоняющий слово «рубль» (см. задачи главы 8).