2009-01-28

Разработка расширений для ArcGIS Desktop [5 Разработка на основе COM-технологии во внешней среде разработки]

Разработка на основе COM-технологии, на мой взгляд, является не альтернативой разработке в среде VBA, а следующим шагом в создании приложения (если это необходимо): закрытие программного кода и подготовка дистрибутива.

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

Разработка на основе COM-технологии во внешней среде разработки обладает следующими особенностями:

·         выбор языка программирования не имеет значения (только личные предпочтения). Однако стоит учесть, что перенос приложения из среды VBA заметно быстрее при использовании Visual Basic .NET.

·         объекты приложения создаются от классов ArcObjects (Application Developer Framework, ADF)

·         для создания инструментов (например, команд и кнопок панели инструментов) удобно использовать встраиваемые в среду разработки шаблоны:

clip_image002

Мастер создания инструмента на основе шаблона

·         для использования требуемой функциональности следует подключить соответствующие библиотеки ArcObjects:

clip_image004

Мастер подключения библиотек ArcObjects

·         в среду разработки встроены сниппеты для ускорения написания типовых фрагментов кода

·         создаваемая функциональность должна быть реализована в виде COM-класса

<ComClass(ZoomToLayer.ClassId, ZoomToLayer.InterfaceId, ZoomToLayer.EventsId), _

          ProgId("CommandInheritingBaseCommand.ZoomToLayer")>

·         после компиляции приложения, во вложенной директории Bin\Debug проекта будут созданы библиотека DLL, файл отладки PDB и типовая библиотека ArcGIS TLB

·         для включения реализованной функциональности на панель инструментов можно воспользоваться меню ToolsCustomize…—CommandsРазделИнструмента—НазваниеИнструмента

clip_image006

Подключение созданного инструмента

·         для отладки приложения требуется указать путь к приложению ArcMap, которое будет запускаться автоматически при запуске процесса отладки

clip_image008

Настройка параметров отладки

Пошаговая инструкция для создания расширения для ArcGIS Desktop в среде .NET приведена в Центре ресурсов ESRI.

При компиляции приложения COM-классы на компьютере разработчика регистрируются автоматически (в шаблоне для этого предусмотрен код). Таким образом, созданную функциональность можно использовать сразу.

С развертыванием приложения на другие компьютеры ситуация обстоит по-другому. Разработчик должен позаботиться о том, каким образом регистрация COM-классов будет выполнена на компьютере пользователя.

Для выполнения приложения на компьютере пользователя должно быть установлены:

·         библиотеки .NET Framework

·         соответствующая функциональности расширения лицензия ArcGIS Desktop

·         зарегистрированная в COM-реестре библиотека расширения и используемые ей ресурсы

Регистрация библиотеки в COM-реестре может быть выполнена:

·         при помощи утилиты Regasm.NET 2.0 находится в каталоге C:\Windows\Microsoft.NET\Framework\v2.0.50727).

§   regasm [DLL_NAME] /codebase

§   например, regasm Kmeans.dll /codebase

§   для отмены регистрации используйте команду regasm [DLL_NAME] /unregister

·         включением регистрации COM-классов в дистрибутив приложения

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

Исходные коды Алгоритма на Visual Basic .NET и BAT-файл для регистрации в  COM-реестре можно скачать по ссылке: http://narod.ru/disk/5260884000/vb.net%20solution.zip.html

 


Скачать PDF-версию с оригинальным оформлением. © Для использования опубликованных на ресурсе материалов достаточно упоминания имени автора и адреса первоисточника. Дата обновления: 2009-01-28.

Разработка расширений для ArcGIS Desktop [4 Создание макросов для ArcGIS Desktop в среде VBA]

Технология создания макросов для ArcGIS Desktop в среде VBA ничем не отличается от, например, технологии создания макросов для Microsoft Excel. Отличия есть только в предметной области и используемых классах.

Результат разработки — это программный код на языке Visual Basic, хранящийся непосредственно в MXD-документе, или MXT-шаблоне документа ArcGIS Desktop. Пользователю нужно вынести кнопку на панель инструментов, запускающую выполнение этого программного кода. Подробнее о технологии создания макросов для ArcGIS Desktop с среде VBA можно прочитать по ссылке: http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm?TopicName=Getting_started_with_VBA.

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

Итак, открываем MXD-проект с тестовыми данными запускаем Visual Basic Editor.

clip_image002

clip_image004

Редактор кода Visual Basic Editor

Все программные модули макроса следует размещать в каталоге Modules. Причем, у вас есть выбор: макрос можно сохранить в самом документе (MXD), или в шаблоне (MXD). В первом случае, разработанное приложение будет доступно только в этом MXD-документе, во втором — во всех документах, созданных на основе шаблона.

clip_image002

Программные модули приложения

Я выделил следующий набор модулей приложения, в соответствии с их назначением (важно разделить математическую реализацию, представление-интерфейс и вспомогательные функции):

·         KmeansClustering: основной модуль, выполняющий последовательность операций, приводящих к результату

·         KmeansAlgorithm: математическая реализация алгоритма, не привязанная к представлению результатов

·         DataDisplay: вспомогательные функции для отображения данных в ArcGIS

·         Datasets: вспомогательные функции для работы с наборами данных

·         Features: вспомогательные функции для работы с объектами наборов данных

·         Layers: вспомогательные функции для работы со слоями

·         KmeansTest: вспомогательный модуль для отладки приложения

Для того чтобы сделать резервную копию программного кода, нужно сделать копию документа ArcGIS Desktop, или экспортировать нужные модули в файлы (команда меню Export File…).

Пользовательский интерфейс для ввода параметров Алгоритма я представил в виде формы frmKmeanParams.

clip_image004

Конструктор формы для ввода параметров Алгоритма

Следующий этап — написание программного кода. Программный код примера можно скачать по ссылке: [в виде экспортированных файлов макроса], [в составе MXT-шаблона].

Один из программных модулей является основным (KmeansClustering), другие же являются вспомогательными и вызываются основным модулем. В принципе, весь код можно разместить в одном модуле, но это неудобно. Команду вызова основного программного модуля удобно вынести на панель инструментов ArcGIS Desktop (используйте меню ToolsCustomize…—Commands—[ Macros ]—МакросОсновногоПрограммногоМодуля).

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

'Main clustering procedure. Executes clustering. Calls all defined steps for clustering

Public Sub DoClustering()

    If Not InitializeVariables Then End

    If Not TakeClusteringParams Then End

    If Not GetInitialData Then End

    If Not ExectuteClustering Then End

    If Not CreateClusteredDataset Then End

    If Not FillClusterIdValues Then End

    If Not AddClusteredLeyer Then End

End Sub

Когда макрос создан и отлажен, его можно установить другим пользователям. Первый и предпочтительный способ — передать им MXT-шаблон, в составе которого есть разработанная функциональность с вынесенной на панель инструментов кнопкой запуска. Тогда пользователю достаточно создать документ на основе этого шаблона и добавить свои данные. Второй способ — экспорт и импорт файлов макроса (не оправдывает себя из-за излишних сложностей).

 


Скачать PDF-версию с оригинальным оформлением. © Для использования опубликованных на ресурсе материалов достаточно упоминания имени автора и адреса первоисточника. Дата обновления: 2009-01-28.

Разработка расширений для ArcGIS Desktop [3 Общие рекомендации по разработке приложений для ArcGIS Desktop]

С точки зрения процесса разработки, приложение для ArcGIS Desktop ничем не отличается от других типов программного обеспечения. Поэтому при разработке приложений для ArcGIS Desktop следует пользоваться теми же принципами и практиками разработки программного обеспечения и написания программного кода.

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

·         Видение (8 страниц)

·         Словарь терминов (1 страница)

·         Описание реализации (1 страница)

·         Руководство пользователя (3 страницы)

Предоставлю некоторые выдержки из этих документов.

Описание потребностей заинтересованных лиц (Видение):

Потребность

Как удовлетворяется потребность сейчас

Приоритет

Источник

STRQ1 Кластеризовывать точечные объекты на карте, сохраняя исходные данные

Копируется слой, «вручную» выделяются кластеры по ранее рассчитанным значениям

Высокий

Представитель пользователей Алгоритма

STRQ2: Метод кластеризации — алгоритм к-средних

Не удовлетворяется, используется другой алгоритм

Средний

Руководитель лаборатории геоинформатики

STRQ3 Кластеризация должна выполняться на любом компьютере с установленным ПО ArcGIS Desktop (без дополнительного ПО)

Удовлетворяется

Высокий

Руководитель лаборатории геоинформатики

STRQ4 Алгоритм должен быть настраиваемым для получения результатов различной точности, зависит от времени выполнения Алгоритма

Не удовлетворяется

Средний

Представитель пользователей Алгоритма

STRQ5: Установка Алгоритма должна быть простой и доступной для неспециалиста в ИТ (может быть выполнена, при необходимости, без администратора)

Высокий

Представитель пользователей Алгоритма, Администратор Алгоритма

STRQ6 Применение Алгоритма (выполнение кластеризации) не должно вызывать сложностей (может быть выполнена кластеризация специалистом с базовыми знаниями ArcGIS)

Не удовлетворяется

Высокий

Представитель пользователей Алгоритма

STRQ7 Результаты кластеризации могут быть сохранены для дальнейшего применения

Сохраняется набор данных в SHP-файле

Высокий

Представитель пользователей Алгоритма

STRQ8 Кластеризация может быть применена к любому точечному набору данных, загруженному в ArcGIS

Удовлетворяется

Высокий

Представитель пользователей Алгоритма

STRQ9 Производительность выполнения кластеризации: 1000 объектов кластеров не более чем за 10 секунд при конфигурации ПК пользователя: CPU 2Ghz, 1Gb RAM

Не удовлетворяется

Высокий

Представитель пользователей Алгоритма

Аннотация к документу Видение:

Настоящий документ предназначен для формирования и согласования общего представления о проекте реализации Алгоритма кластеризации к-средних (k-means) в среде ArcGIS Desktop. Документ фокусируется на описании заинтересованных лиц и их потребностей, и включает концепцию технического решения.

Метод к-средних является известным алгоритмом кластеризации пространственного расположения объектов. Реализация этого алгоритма в среде ArcGIS Desktop позволит значительно ускорить и повысить качество кластеризации пространственных объектов и сохранять результаты кластеризации для дальнейшего применения.

Документ разработан в соответствии с рекомендациями методологии Rational Unified Process. Термины и определения приведены в документе Словарь терминов.

Видение было проработано за несколько часов, наполнение многих разделов уложилось в одно предложение — это маленький проект разработки. Содержание документа Видение:

1          Назначение и цели Проекта

1.1       Цель реализации Алгоритма

1.2       Постановка проблемы

1.3       Позиционирование Алгоритма

2          Заинтересованные лица и пользователи

2.1       Позиционирование на рынке

2.2       Заинтересованные лица

2.3       Описание пользователей

2.4       Среда работы пользователя

2.5       Описание потребностей заинтересованных лиц

2.6       Альтернативные решения

2.6.1     Продолжать кластеризовывать вручную

2.6.2     Передавать работы по кластеризации на подряд

2.6.1     Передать разработку на подряд

2.6.2     Приобрести готовый алгоритм

3          Описание Алгоритма

3.1       Взаимодействие со смежными системами (компонентами)

3.2       Обзор возможностей Алгоритма

3.3       Допущения и зависимости

3.4       Оценка стоимости        

3.5       Лицензирование

4          Возможности (features) Алгоритма

5          Ограничения

6          Показатели качества

7          Другие требования

7.1       Применение стандартов

7.2       Системные требования

7.3       Требования к среде применения

8          Документирование Алгоритма

8.1       Руководство пользователя Алгоритма

8.2            Требования к упаковыванию

Описание реализации разделилось на постановку задачи программирования, ее разделения на подзадачи, поиск литературы и примеров по теме, и определение используемых классов ArcObjects:

Определение задачи

Создать новый точечный слой данных на основе выбранного слоя, выполнить на его наборе данных алгоритм кластеризации к-средних и отметить цветом кластеры объектов.

Разделение на подзадачи

1.         Выполнить проверку возможности выполнения операции. Слой должен быть выбран точечный. {Layer, feature type}

2.         Вывести окно для ввода параметров кластеризации: количество кластеров и максимально число итераций.

3.         Извлечь массив исходных данных: координаты х, у и id объектов исходного точечного слоя. Координаты х, у могут быть как в декартовой, так и в географической системах координат. Используется один алгоритм вычисления евклидового расстояния. {Feature}

4.         Применить алгоритм к-средних для выполнения кластеризации. Исходящие данные: массив исходных данных с дополнительным полем «номер кластера», массив центроидов с координатами х, у центроидов.

5.         Скопировать набор данных выбранного точечного слоя в папку \output\ в виде SHP-файла. Исходным набором данных может быть SHP-файл или набор данных персональной базы данных MDB. {Workspace, Dataset, copy dataset}

6.         Создать в новом наборе данных дополнительное поле «Номер кластера». Заполнить его значениями массива данных. {Dataset, fields}

7.         Добавить на карту слой для нового набора данных. {Dataset, Layer}

8.         Раскрасить элементы в соответствии с номером кластера, обозначить центроиды. {Feature, Symbol}

Доступные документация и примеры

          Извлечь массив исходных данных

i.          Loop through selected area features (ArcGIS Desktop Developers Guide, 280)

          Добавить на карту слой для нового набора данных

i.          Add feature class to ArcMap (ArcGIS Desktop Developers Guide, 274)

          Раскрасить элементы

i.          How to make a character marker symbol

ii.         Use an AlgorithmicColorRamp to color a ClassBreaksRenderer

iii.         Create a custom marker placement for placing markers around a point

iv.        Style gallery auto symbol selection (ArcGIS Desktop Developers Guide, 278)

Связанные диаграммы классов

          MxDocument: ArcMapUIObjectModel.pdf

          ILayer, IMap: CartoObjectModel.pdf

          IDataset, IFeature, IFeatureClass, WorkspaceFactory: GeoDatabaseObjectModel.pdf

Важным этапом разработки расширений для ArcGIS является подготовка тестового набора данных. В качестве тестового набора (набор точек) данных я использовал данные об эпицентрах землетрясений в Калифорнии, которые для наглядности разместил на карте США. Скачать тестовый набор данных (карта США не включена).

clip_image002

Тестовый набор данных

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

 


Скачать PDF-версию с оригинальным оформлением. © Для использования опубликованных на ресурсе материалов достаточно упоминания имени автора и адреса первоисточника. Дата обновления: 2009-01-28.

Разработка расширений для ArcGIS Desktop [2 Особенности разработки приложений для ArcGIS Desktop]

Разработка приложений для ArcGIS Desktop имеет свои особенности:

·        Требуются некоторые навыки работы с ArcGIS. Если у вас их нет, следует потратить неделю на изучение.

·        Требуется знание классов ArcObjects и, желательно, принципов COM-технологии. На эту тему существует много литературы в Интернете, на изучение ArcObjects уйдет от двух недель до двух месяцев.

·        Для удобства отладки рекомендую первоначально разрабатывать приложение как макрос в среде Visual Basic for Application, и только потом транслировать код в другую среду разработки. Это позволит избежать затрат времени на загрузку и выгрузку ArcMap в процессе отладки.

·        Следует подготовить тестовый набор данных и MXD-проект ArcGIS Desktop для отладки приложения.

2.1   Объекты ArcObjects

ArcObjects — набор платформонезависимых компонентов, написанных на C++, предоставляющих интерфейсы для работы с пространственными данными. На основе ArcObjects построены все приложения ESRI ArcGIS.

Компоненты ArcObjects разработаны в соответствии с COM-технологией, и могут быть использованы при разработке на различных языках программирования [5].

clip_image002

Группы компонентов ArcGIS Desktop

Компоненты ArcObjects подразделяются на библиотеки, которые используются при необходимости использования соответствующей функциональности. Вот перечень библиотек ArcObjects в порядке уменьшения значимости:

·         Framework

·         GeoDatabaseUI

·         DisplayUI

·         OutputUI

·         Catalog

·         CatalogUI

·         CartoUI

·         DataSourcesRasterUI

·         ArcCatalogUI

·         ArcCatalog

·         ArcMapUI

·         ArcMap

·         AnimationUI

·         Editor

·         GeoReferenceUI

·         EditorExt

·         LocationUI

·         GeoDatabaseDistributedUI

·         GeoprocessingUI

·         OutputExtensions

·         OutputExtensionsUI

·         DataSourcesSMUUI

·         ArcScan

·         NetworkAnalystUI

·         SpatialAnalystUI

·         SchematicUI

·         3DAnalystUI

·         ArcScene

·         GlobeCoreUI

·         ArcGlobe

·         Publisher

·         PublisherControls

·         PublisherUI

·         MaplexUI

·         TrackingAnalystUI

·         SurveyExt

·         SurveyPkgs

·         SurveyDataEx


Скачать PDF-версию с оригинальным оформлением. © Для использования опубликованных на ресурсе материалов достаточно упоминания имени автора и адреса первоисточника. Дата обновления: 2009-01-28.