Глава 10. Как решать проблемы разработки в ArcObjects В этой главе: Этапы решения проблем разработки в ArcObjects Определение задачи программирования ArcObjects Найти корректную диаграмму модели объекта Перемещение по диаграмме модели объекта Вопросы для самопроверки Контрольные вопросы и задачи Руководство по разрешению проблем в ArcObjects представляет методологию, помогающую Вам разрешать реальные задачи программирования ArcObjects, которые адаптируют или расширяют приложения ArcGIS Desktop. Руководство помогает описывать и категорировать Ваши задачи и документы о том, как использовать help-ресурсы и инструменты для разрешения проблемы программным путем. В заключение руководство не только поможет решить конкретные проблемы, но также поможет Вам понимать и изменять структуры ArcObjects Определение задачи программирования ArcObjects Наиболее важный аспект успешного использования проблемы – определить саму задачу. Задача может возникнуть из реальных проблем ГИС на Вашем рабочем месте или может быть результатом расширения, которое Вы хотели бы сделать для существующей системы ArcGIS. Задача может быть такой простой как добавление UIToolControl в пользовательский интерфейс ArcMap для масштабирования (zoom in) карты, или такой подробной как создание пользовательского пространственного объекта базы геоданных. В любом случае для определения задачи настолько полно, насколько возможно, Вы должны рассмотреть следующие шаги: Опишите проблему, используя терминологию ArcGIS. Разделите задачу на более мелкие подзадачи. Решите, где компилировать исходный код. Найдите существующий пример или рекомендуемую методологию. Описание проблемы в терминах ArcGIS При определении проблемы полезно развить задачу в терминах ArcGIS и описать действия настолько полно, насколько это возможно. Это поможет Вам найти темы в справочной системе и соответствующие компоненты в ArcObjects. Во многих случаях, этот шаг заставит Вас также возвратиться и снова просмотреть важные базовые темы и прочитать материалы, связанные с задачей под рукой. Из этого исследования Вы приобретете дальнейшее понимание того, как может быть решена конкретная задача. Для данного примера исходное описание задачи заключается в том, чтобы добавить в ArcMap набор данных с именем States. Используя терминологию ArcGIS, эта команда должна быть сформулирована наподобие этого: Access the States feature class from a personal geodatabase and add it to ArcMap (Получить доступ к классу пространственных объектов в базе геоданных и добавить его в ArcMap). Наиболее заметное изменение в описании заключается в том, что оно расширено за счет идентификации включенных наборов данных и использования соответствующей терминологии ArcObjects. Например, набор данных с именем States более точно определяется как класс пространственных объектов (feature class) который размещается в существующей персональной базе геоданных (в базе данных Microsoft Access). Другое важное изменение заключается в том, что действия в описании также определены более полно. Теперь они показывает тот факт, что сначала необходимо открыть базу данных, затем добавить содержащийся в ней класс пространственных объектов в ArcMap. Как Вы увидите на следующем шаге, важно идентифицировать эти действия, поскольку при построении конечного кода они могут рассматриваться как две раздельные задачи программирования. Определение подзадач Этот шаг вынуждает Вас заново просмотреть описание исходной задачи и определить, может ли она быть разбита на мелкие, более управляемые подзадачи. Этот процесс позволяет Вам сосредоточиться на меньшей части исходной проблемы и, следовательно, на меньших разделах диаграммы модели объекта ArcObjects, когда придет время писать код. Наилегчайшим способом идентифицировать подзадачи является просмотр глаголов или слов действия, которые скрыты в описании. По исходному описанию задачи легко определяются две подзадачи. Легко видеть даже из описания на русском языке, что можно идентифицировать две подзадачи: 1. Получить доступ к классу пространственных объектов States. 2. Добавить новый слой на карту. Каждая подзадача будет решаться индивидуально, когда Вы дойдете до частей 2 и 3 этого руководства. Это важно, поскольку дает Вам возможность сосредоточиться на малой части проблемы и меньших разделах диаграммы модели объекта. Где писать код После описания проблемы и определения подзадач, Вам нужно решить, где писать код и как предоставить функциональность конечным пользователям. Помните, что место тестирования кода и место написания конечного кода – две большие разницы. В течение фазы тестирования и начального проектирования, всегда рекомендуется начинать писать код как макрос VBA или в ArcMap или в ArcCatalog. Далее, Вы можете легко собрать, протестировать и отладить источник и экспериментировать с любым числом классов или интерфейсов. После завершения фазы тестирования Вы можете решить оставить код как макрос VBA или перевести его в другой формат. Решение, где писать код конечного приложения, может оказаться сложным, и поскольку Вы приобретаете опыт разработки с ArcObjects, принятие решения может упроститься. В общем случае ответ определяется типом разрабатываемого приложения и способом поставки функциональности конечному пользователю. В общем, имеются три способа написания кода ArcObjects для приложения Desktop ArcGIS: как макрос VBA в приложении Desktop ArcGIS как компонент ActiveX COM, такой как DLL или OCX как самостоятельный EXE Вы должны также заметить, что просмотр примеров и ассоциированной документации может помочь Вам определить, где поместить свой код. Это подробно рассматривается на следующем шаге. Написание макросов VBA в приложениях ArcGIS Как упоминалось, Вы должны начать разработку путем использования среды VBA в одном из существующих приложений ArcGIS. VBA является простым языком программирования с множеством утилит, таких как завершение (completion) кода в режиме отладки и Object Browser (Инспектор объектов), который поможет Вам быстро ассемблировать код. Написание компонентов ActiveX COM Если Вы хотите использовать язык программирования отличный от VBA, или если Вы хотите пакетировать функциональность ArcObjects в COM DLL, EXE или OCX, Вы будете работать за пределами среды разработки VBA. Такое приближение обычно требует создания проекта, ссылки на библиотеки типов ArcObject, добавления кода, последующего компилирования источника в бинарный файл. Если Вы хотите расширить существующую архитектуру ArcObjects путем добавления новых пользовательских компонентов, то должны быть написаны компоненты ActiveX COM. Процесс требует реализации одного или более интерфейсов ArcObjects в новом объекте. Самостоятельные приложения ArcObjects может быть использован для написания самостоятельных приложений. Это обычно требует создания проекта, ссылок на библиотеки типов ArcObject, затем сборки требуемого кода для поддержки функциональности приложения. Имеются различные контроли ESRI, которые могут помочь Вам ввести функциональность ArcObjects в Ваше приложение. Тем не менее, как разработчик Desktop ArcGIS Вы можете работать только с контролями ESRI Map и Pagelayout. Руководство для разработчиков Engine ArcGIS предоставляет больший контроль и функциональность и рекомендует решения по созданию сложных самостоятельных приложений. Найти корректную диаграмму модели объекта Данный раздел объясняет, как использовать help-ресурсы и инструменты, чтобы определить местоположение правильной диаграммы модели объекта, требуемой для решения задачи. Напомним, что оставшиеся шаги в Части 2 и 3 спроектированы для работы только с одной задачей. Извлечение ключевых слов Этот шаг требует, чтобы Вы экстрагировали ключевые слова из описания подзадачи. This is not an exact science, но чем больше терминов ArcObjects использовано в исходном описании, тем более успешно Вы закончите этот шаг. Следовательно, становится очевидным, что критическим является точное определение начальной задачи на первом шаге Части 1. Перемещения по диаграмме модели объекта Последняя часть руководства включает перемещение по диаграммам модели объекта и асемблированию требуемого кода для решения каждой подзадачи. Это обычно наиболее трудный шаг, поскольку он включает использование многих help-ресурсов и инструментов и обычно не является линейным процессом. Когда Вы ближе познакомитесь с help-инструментами и диаграммами модели объекта, этот процесс станет легче. Резюме Теперь должно быть ясным, что имеются различные способы разрешения программных проблем ArcObjects. Однако сходство между всеми из них заключается в способности эффективно использовать help-документы и ресурсы, а также читать диаграммы модели объекта. Будем надеяться, это руководство предоставило Вам возможность ознакомиться с основными доступными ресурсами и упражнениями по их использованию для решения реальной проблемы