Делюсь с вами частью своей последней курсовой работы, вдруг кому-то пригодиться. Мне пришлось достаточно много переводить.

Введение

Геообработка – это анализ и обработка географической информации – одна из основополагающих функций географической информационной системы. В настоящее время ArcGIS 9 содержит большое количество инструментов: для проведения анализа, конвертации, управления данными, геокодирования, динамической сегметации, картографии, работы с растрами и других задач.

Существует несколько способов использования инструментов, основными из которых являются: диалоговые окна инструментов, командная строка, скрипты (поддерживаются языки Python, Perl, VBScript, JavaScript); COM объекты для разработки новых инструментов геообработки и типов данных, веб-сервисы на основе ArcGIS REST API.

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


1 Постановка задачи

Цель работы – изучения принципов использования инструментов геообработки в Silverlight ArcGIS API. Реализация картографического веб-приложения на платформе ArcGIS API for Silverlight, использующего инструменты геообработки размещенные на ArcGIS Server.

2 Геообработка

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

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

2.1 Применение геообработки

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

Механизм, используемый для построения рабочих потоков при геообработке, должен выполнять ряд команд в определенной последовательности. Пользо­ватели ArcGIS могут создавать такие процессы гра­фически с помощью интерфейса ModelBuilder™. Так же существует несколько основных способов использования инструментов геообработки: диалоговые окна инструментов; командная строка (позволяет осуществлять быстрый и удобный доступ); скрипты (поддерживаются языки Python, Perl, VBScript, JavaScript); модели (блок-схемы, позволяющая автоматизировать рабочий процесс, сохранять и документировать методологии); COM объекты для разработки новых инструментов геообработки и типов данных, веб-сервисы опубликованные на ArcGIS Server.

Геообработка широко используется на всех этапах работы с ГИС для автоматизации и компиляции дан­ных, управления, анализа и моделирования данных, а также для развитой картографии.

2.2 Пример использования инструментов геообработки

Пример рабочего процесса представленный ниже использует всего два инструмента геообработки: Project и Clip.

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

Самым простым способом решения этой задачи является использование инструментов геообработки. Первым шагом будет использование инструмента Project, который применяет новую проекцию к выбранному классу. На рисунке 1 показано использование инструмента Project – это диалоговое окно с его полями для ввода данных. В верхнем поле указывается необходимое покрытие, шейпфайл, затем указывается выходной набор данных или класс и необходимая проекция.

Рисунок 1 — Пример использования инструмента Project.

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

Рисунок 2 — Использование инструмента Clip

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

2.3 Серверная геообработка

Каждая функция геообработки,  которая обычно доступна локально в настольной ГИС,  доступна как серверный инструмент в  ArcGIS Server.  Сервер может обрабатывать запросы на геообработку в асинхронном и синхронном  режиме. Таким образом выполняя  сервис геообработки в фоновом режиме клиент может выполнять другие задачи.  В синхронном режиме, который является классическим для картографических Web приложений,  вычисления можно продолжать только если шаг геообработки окончен.

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

3 Использование геообработки в Silverlight

3.1 Обзор веб-службы геообработки ArcGIS Server REST API

Для того чтобы успешно использовать ArcGIS Server REST API необходимо знать как построить URL и интерпретировать ответ. Все ресурсы и инструменты, размещенные через  REST API, доступны через иерархию каталогов доступа для каждой службы ГИС, опубликованной с помощью ArcGIS Server.

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

Для ArcGIS Server, по умолчанию конечная точка:

http://<host>/<instance>/services/<folder>

Разбор URL:

  • http://<host> — адрес ArcGIS Server.
  • /<instance> - адрес, куда установлен REST API. Значение по умолчанию "/arcgis/rest"
  • /services – адрес каталога с сервисами.
  • /<folder> — адрес к какому то инструменту или каталогу с инструментами.

При вводе URL-адреса конечной точки в браузере отображается служба каталогов. Каждый ArcGIS Server поставляется со службой каталогов, которая предоставляет возможность перемещаться по списку сервисов, папок и инструментов на сервере.

Необходимая информация о сервисе геообработки:

  • Адрес для доступа к сервису (URL)
  • Необходимые входные и выходные данные
  • Тип задачи (асинхронный доступ или синхронный)

Рисунок 3 — Обзор инструмента MessageInABottle.

На рисунке 3 приведена страница сервиса геообработки при открытии адреса инструмента через браузер, для примера был выбран инструмент MessageInABottle, который позволяет вычислить передвижение объекта в водах земли. Свойство Execution Type показывает в каком режиме работает инструмент: синхронный (esriExecutionTypeSynchronous) или асинхронный (esriExecutionTypeAsynchronous). Для каждого параметра необходимо знать имя параметра, тип данных и направление (вход или выход). Тип данных инициализируется в коде приложения. Входные параметры определяются через свойство direction, как esriGPParameterDirectionInput, а выходные как esriGPParameterDirectionOutput.

3.2 Геообработка в Silverlight

Инструменты геообработки в Silverlight позволяют использовать существующие модели обработки данных, которые были созданы в ArcGIS. Модели геообработки обычно состоят из ряда инструментов, которые можно увидеть в ArcToolbox ESRI, объединенных в логические цепочки для выполнения конкретной задачи.

Класс Geoprocessor в ArcGIS Silverlight API обеспечивает доступ к моделям геообработки, которые опубликованы на ArcGIS Server, как веб-службы. Эти сервисы полезны, потому что геообработка может быть весьма трудоемким процессом, и для работы ее инструментов требуется специальное программное обеспечение ГИС. Поэтому  часто для выполнения анализа более эффективно отправлять задание геообработки на выделенный сервер, а не полагаться на мощность клиентской машины. Это позволяет избавиться от осуществления логики геопроцессинга в самом приложении и установки пользователем дополнительного программного обеспечения.

На рисунке 4 представлена диаграмма класса Geoprocessor.

Рисунок 4 — Объектная модель класса Geoprocessor

Веб-сервисы опубликованные с помощью ArcGIS REST API выполняют две основных типа операции: синхронные – используются события ExecuteComplete и Fault, асинхронные – SubmitJob (осуществляет асинхронную обработку задачи) используются JobComplete, Cancel, и Fault.

3.3 Реализация примера использования геообработки в Silverlight

На основе уже рассмотренного инструмента MessageInABottle ниже описан пример использования геообработки в Silverlight приложении. При работе с инструментами геообработки из Silverlight необходимо инициализировать выполнение и анализ результатов геообработки в самом Silverlight приложении с помощью С# или VB. Задачи геообработки не содержат визуальных компонентов, поэтому они не могу взаимодействовать напрямую с интерфейсом XAML. Однако, как правило, для этого используются средства Silverlight для работы с графическими слоями и элементами графики.

Для инициализации задачи геообработки, необходимо создать объект Geoprocessor, при объявлении нужно передать в конструктор класса URL веб-службы геообработки (листинг 1).

Листинг 1 – Создание объекта Geoprocessor

Geoprocessor geoprocessingTask = new Geoprocessor("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/" + "Specialty/ESRI_Currents_World/GPServer/MessageInABottle");

Экземпляр класса Geoprocessor  в качестве входных данных использует список объектов GPParameter. Все классы параметров геообработки  (например GPFeatureRecordSetLayer, GPDouble, GPRecordSet, GPRasterData и т.д.) извлекаются из класса GPParameter. Служба MessageInABottle, как показано на рисунке 3, имеет два входных параметра — Input_Point, который имеет тип GPFeatureRecordSetLayer, и параметр Days, который имеет тип GPDouble. Таким образом, код инициализации параметров для выполнения этой задачи представлен в листинге 2.

Листинг 2 – Инициализация входных параметров

  List&lt;GPParameter&gt; parameters = new List&lt;GPParameter&gt;();
   parameters.Add(new GPFeatureRecordSetLayer("Input_Point", e.MapPoint));
   parameters.Add(new GPDouble("Days", Convert.ToDouble(DaysTextBox.Text)));

Есть два типа режима выполнения запросов геообработки, который выбирается в зависимости от свойств инструмента: синхронный или асинхронный. В ArcGIS Server, синхронный сервис возвращает результат каждой обработки, как только операция завершена – никакие результаты не сохраняются на сервере. Асинхронный сервис сохраняет результат на сервере и возвращает идентификатор процесса клиенту.

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

При работе с синхронной службой, необходимо использовать метод ExecuteAsync. Для получения результатов используется обработчик события ExecuteCompleted или ExecuteLastResult. Использование методов ExecuteAsync и ExecuteCompleted для инструмента MessageInABottle показано в листинге 3. Обработчик события просматривает полученные результаты обработки, добавляя каждый в слой GraphicsLayer. Каждый GPParameter в результатах, которые передаются обработчику считается объектом GPFeatureRecordSetLayer поскольку этот выходной тип данных определен в инструменте MessageInABottle (рисунок 3).

Листинг 3 – Запрос и обработка результатов

geoprocessorTask.ExecuteCompleted += Geoprocessor_ExecuteCompleted;
geoprocessorTask.ExecuteAsync(parameters);
.
.
.
private void GeoprocessorTask_ExecuteCompleted(object sender, GPExecuteCompleteEventArgs e)
{
   GraphicsLayer graphicsLayer = MyMap.Layers["MyGraphicsLayer"] as GraphicsLayer;
   foreach (GPParameter gpParameter in e.Results.OutParameters)
    {
       GPFeatureRecordSetLayer gpLayer = gpParameter as GPFeatureRecordSetLayer;
        foreach (Graphic graphic in gpLayer.FeatureSet.Features)
       {
           graphic.Symbol = PathLineSymbol;
           graphicsLayer.Graphics.Add(graphic);
       }
    }
}

Для отображение результатов на карте необходимо создать графический слой MyGraphicsLayer. В листинге 4 отображен отрывок XAML разметки для создания карты.

Листинг 4 – Создание разметки с помощью XAML

&lt;esri:Map x:Name="MyMap" Background="White" MouseClick="MyMap_MouseClick"&gt;
 
&lt;esri:Map.Layers&gt;
 
&lt;esri:ArcGISTiledMapServiceLayer
 
Url="http://server.arcgisonline.com/ArcGIS/rest/services/NGS_Topo_US_2D/MapServer" /&gt;
 
&lt;esri:GraphicsLayer /&gt;
 
&lt;/esri:Map.Layers&gt;
 
&lt;/esri:Map&gt;

В приложении А находиться блок-схема алгоритма использования приложением Silverlight инструмента геообработки  MessageInABottle, размещенного на ArcGIS Server.

Заключение

В ходе выполнения курсового проекта на основе ArcGIS API for Silverlight  было спроектировано веб-приложение реализующее работу с инструментами геообработки. Использование инструментов геообработки в Silverlight позволяет создавать картографические веб-приложения, которые могут использовать существующие модели обработки данных, созданные в ArcGIS.

Связаные записи

Метки: , , ,