1 Фев
Делюсь с вами частью своей последней курсовой работы, вдруг кому-то пригодиться. Мне пришлось достаточно много переводить.
Геообработка – это анализ и обработка географической информации – одна из основополагающих функций географической информационной системы. В настоящее время ArcGIS 9 содержит большое количество инструментов: для проведения анализа, конвертации, управления данными, геокодирования, динамической сегметации, картографии, работы с растрами и других задач.
Существует несколько способов использования инструментов, основными из которых являются: диалоговые окна инструментов, командная строка, скрипты (поддерживаются языки Python, Perl, VBScript, JavaScript); COM объекты для разработки новых инструментов геообработки и типов данных, веб-сервисы на основе ArcGIS REST API.
Использование инструментов геообработки в Silverlight позволяет создавать картографические веб-приложения, которые могут использовать существующие модели обработки данных, созданные в ArcGIS. При использовании инструментов геообработки область возможного применения веб-приложений на основе ArcGIS API for Silverlight существенно увеличивается.
Цель работы – изучения принципов использования инструментов геообработки в Silverlight ArcGIS API. Реализация картографического веб-приложения на платформе ArcGIS API for Silverlight, использующего инструменты геообработки размещенные на ArcGIS Server.
Под геообработкой понимаются разнообразные функции обработки пространственных данных. ArcGIS предлагает богатый выбор инструментов для обработки пространственной информации: для проведения анализа, конвертации, управления данными, геокодирования, динамической сегметации, картографии, работы с растрами; от оверлейных операций, построения буферных зон, инструментов для выявления пространственных закономерностей и управления данными до расширенных возможностей обработки растров, методов интерполяции и оценки качества данных, зональной фильтрации, многофакторного анализа, растровой алгебры, построения и проверки топологии, построения графических схем. Эти инструменты используются для работы с такими информационными объектами ГИС, как наборы данных, поля атрибутов и картографические элементы для вывода карт на печать. В совокупности эти продвинутые команды и объекты данных формируют основу развитой среды обработки географических данных (геообработки).
Инструменты являются строительными блоками для выполнения многошаговых операций. Инструмент применяет операцию к некоторым имеющимся данным с целью получения новых данных. Среда геообработки используется в ГИС для последовательного выполнения серии таких операций. Операции, соединенные в единую цепочку, формируют модель процесса обработки данных. Такая единая последовательность выполнения операций используется в ГИС для автоматизации выполнения многочисленных задач геообработки.
Геообработка используется для моделирования процессов передачи данных из одной структуры в другую с целью выполнения многих стандартных задач ГИС — например, для импорта данных из разных форматов, интегрирования этих данных в ГИС, для стандартных процедур проверки качества импортируемых данных. Возможность автоматизации и повторного выполнения таких рабочих процессов является сильной стороной ГИС. Она широко применяется в многочисленных ГИС-приложениях и сценариях работы с данными.
Механизм, используемый для построения рабочих потоков при геообработке, должен выполнять ряд команд в определенной последовательности. Пользователи ArcGIS могут создавать такие процессы графически с помощью интерфейса ModelBuilder™. Так же существует несколько основных способов использования инструментов геообработки: диалоговые окна инструментов; командная строка (позволяет осуществлять быстрый и удобный доступ); скрипты (поддерживаются языки Python, Perl, VBScript, JavaScript); модели (блок-схемы, позволяющая автоматизировать рабочий процесс, сохранять и документировать методологии); COM объекты для разработки новых инструментов геообработки и типов данных, веб-сервисы опубликованные на ArcGIS Server.
Геообработка широко используется на всех этапах работы с ГИС для автоматизации и компиляции данных, управления, анализа и моделирования данных, а также для развитой картографии.
Пример рабочего процесса представленный ниже использует всего два инструмента геообработки: Project и Clip.
Предполагается, что получено 20 покрытий и шейпфайлов. Они находятся в различных картографических проекциях. Задача заключается в изменении проекции каждого из 20 наборов данных, удаление посторонних данных и импортирование полученных результатов в базу геоданных.
Самым простым способом решения этой задачи является использование инструментов геообработки. Первым шагом будет использование инструмента Project, который применяет новую проекцию к выбранному классу. На рисунке 1 показано использование инструмента Project – это диалоговое окно с его полями для ввода данных. В верхнем поле указывается необходимое покрытие, шейпфайл, затем указывается выходной набор данных или класс и необходимая проекция.
Рисунок 1 — Пример использования инструмента Project.
Второй шаг заключается в использовании инструмента геообработки Clip к данным выходящим за пределы изучаемого района исследований. Инструмент Clip имеет два входа, класс любого типа (точечный, полилинии, полигон). В результате он создает новый класс данных, имеющий только те данные, которые попадают внутрь выбранной области. Процесс использования инструмента Clip представлен на рисунке 2.
Рисунок 2 — Использование инструмента Clip
Оба инструмента могут быть использованы в пакетном режиме, что позволит в автоматическом режиме обработать каждый слой данных. Также можно быстро создать модель, которая будет представлять цепочку из инструментов Project и Clip, а затем возможно использовать эту модель в пакетном режиме.
Каждая функция геообработки, которая обычно доступна локально в настольной ГИС, доступна как серверный инструмент в ArcGIS Server. Сервер может обрабатывать запросы на геообработку в асинхронном и синхронном режиме. Таким образом выполняя сервис геообработки в фоновом режиме клиент может выполнять другие задачи. В синхронном режиме, который является классическим для картографических Web приложений, вычисления можно продолжать только если шаг геообработки окончен.
Возможность серверной геообработки важна для настольной и мобильной обработки пространственных данных. Можно достигнуть экономии в числе настольных лицензий, вычислительной мощности настольных рабочих станций и объеме рабочего времени за счет перемещения фукнциональности и вычислительной мощности с настольных клиентов на сервер. использовать эту модель в пакетном режиме.
Для того чтобы успешно использовать 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 поставляется со службой каталогов, которая предоставляет возможность перемещаться по списку сервисов, папок и инструментов на сервере.
Необходимая информация о сервисе геообработки:
Рисунок 3 — Обзор инструмента MessageInABottle.
На рисунке 3 приведена страница сервиса геообработки при открытии адреса инструмента через браузер, для примера был выбран инструмент MessageInABottle, который позволяет вычислить передвижение объекта в водах земли. Свойство Execution Type показывает в каком режиме работает инструмент: синхронный (esriExecutionTypeSynchronous) или асинхронный (esriExecutionTypeAsynchronous). Для каждого параметра необходимо знать имя параметра, тип данных и направление (вход или выход). Тип данных инициализируется в коде приложения. Входные параметры определяются через свойство direction, как esriGPParameterDirectionInput, а выходные как esriGPParameterDirectionOutput.
Инструменты геообработки в Silverlight позволяют использовать существующие модели обработки данных, которые были созданы в ArcGIS. Модели геообработки обычно состоят из ряда инструментов, которые можно увидеть в ArcToolbox ESRI, объединенных в логические цепочки для выполнения конкретной задачи.
Класс Geoprocessor в ArcGIS Silverlight API обеспечивает доступ к моделям геообработки, которые опубликованы на ArcGIS Server, как веб-службы. Эти сервисы полезны, потому что геообработка может быть весьма трудоемким процессом, и для работы ее инструментов требуется специальное программное обеспечение ГИС. Поэтому часто для выполнения анализа более эффективно отправлять задание геообработки на выделенный сервер, а не полагаться на мощность клиентской машины. Это позволяет избавиться от осуществления логики геопроцессинга в самом приложении и установки пользователем дополнительного программного обеспечения.
На рисунке 4 представлена диаграмма класса Geoprocessor.
Рисунок 4 — Объектная модель класса Geoprocessor
Веб-сервисы опубликованные с помощью ArcGIS REST API выполняют две основных типа операции: синхронные – используются события ExecuteComplete и Fault, асинхронные – SubmitJob (осуществляет асинхронную обработку задачи) используются JobComplete, Cancel, и Fault.
На основе уже рассмотренного инструмента 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<GPParameter> parameters = new List<GPParameter>();
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
<esri:Map x:Name="MyMap" Background="White" MouseClick="MyMap_MouseClick"> <esri:Map.Layers> <esri:ArcGISTiledMapServiceLayer Url="http://server.arcgisonline.com/ArcGIS/rest/services/NGS_Topo_US_2D/MapServer" /> <esri:GraphicsLayer /> </esri:Map.Layers> </esri:Map>
В приложении А находиться блок-схема алгоритма использования приложением Silverlight инструмента геообработки MessageInABottle, размещенного на ArcGIS Server.
В ходе выполнения курсового проекта на основе ArcGIS API for Silverlight было спроектировано веб-приложение реализующее работу с инструментами геообработки. Использование инструментов геообработки в Silverlight позволяет создавать картографические веб-приложения, которые могут использовать существующие модели обработки данных, созданные в ArcGIS.
Ваш Комментарий