Иногда широта возможностей инструментов разработчиков ArcGIS и проблемы написания кода для веб-сервиса могут делать расширения и перехватчиков серверных объектов (SOE и SOI) трудными для новичков. В данном разделе обсуждаются некоторые распространенные задачи веб-ГИС, для которых ГИС-разработчики традиционно писали пользовательский код, и предлагаются альтернативные подходы, не требующие написания SOE или SOI.
Создание компоновок для печати
Многие разработчики для доступа к объекту компоновки картографического сервиса использовали пользовательский код, в частности для добавления в свои веб-приложения функций высоко-качественной печати . При работе с картами и окружающими их элементами ранее использовался ArcObjects для создания печатных документов больших форматов и т. д.
В качестве альтернативы вы теперь можете использовать arcpy.mp (для ArcGIS Pro) модуль Python для включения в скрипт вашей конструкции компоновки и печати карт. После этого можно открыть доступ к такому скрипту посредством сервиса геообработки или веб-инструмента. Модуль ArcPy позволяет очень точно управлять документами карты: можно динамически добавлять слои на карту, обновлять символы и пр. Также можно работать с компоновкой карты, управлять такими элементами, как текст и изображения.
В следующем уроке показывается, как можно опубликовать пользовательские компоновки печати:
Изменение символов и механизмов отображения
Другой причиной, по которой в прошлом разработчикам был необходим пользовательский код, это – для изменения символов определенного слоя в картографическом сервисе. Такой рабочий процесс часто требовал использования специальных, не - объединенных сервисов, что ограничивало масштабируемость приложений. Некоторые разработчики находили способы использовать сервисы, объединенные в пул, однако переключение состояния сервиса для ответа на запросы от разных пользователей часто приводило к снижению производительности и возлагало на разработчика дополнительную ответственность по поддержанию работоспособности самого экземпляра карты.
API-интерфейсы веб-программирования ArcGIS обеспечивают простой способ присвоения символов пространственным объектам с помощью клиентского слоя объектов или графического слоя, свойства отображения которых можно изменять в любое время. Суть этого метода состоит в том, что вся геометрия и атрибуты видимых объектов загружаются на клиентскую машину, что позволяет ей легко отрисовывать объекты с использованием любых цветов, ширин или границ классов, определенных разработчиком приложения.
Использование слоя объектов особенно эффективно при создании тематических карт, для взаимодействия с объектами и их выделения и т. д., однако этот метод не подходит при работе с тысячами объектов или очень сложными полигональными объектами. В таких случаях оптимальным методом является запрос изменения символов на уровне сервиса и отображение карты самим картографическим сервисом. Ранее для этого нужно было использовать ArcObjects.
Теперь вы можете изменять содержание и символы картографического сервиса во время выполнения. Больше не нужно использовать определенный пользовательский код для изменения символов в слоях картографического сервиса. Вместо этого для каждого запроса можно выбирать соответствующее содержимое и символы, которые будут использоваться на создаваемой карте.
Определение символов для слоев в картографическом сервисе во время выполнения осуществляется путем включения сведений об отображении в запрос к веб-сервису на отрисовку карты вместе с обычными данными о видимости слоев, экстенте и пр. API-интерфейсы веб-программирования ArcGIS включают служебные классы, которые позволяют с легкостью задавать содержание, методы отображения, границы классов, символы и т. д.
Дополнительные сведения об изменении содержимого и символов в картографическом сервисе "на лету" см. в разделе O динамических слоях.
Веб-редактирование
В ранних выпусках ArcGIS Server редактирование данных через интернет приходилось проводить исключительно в пользовательском коде с использованием локальных подключений (DCOM). Внедрение сервиса объектов устранило необходимость написания расширений для этой цели.
REST API позволяет редактировать объекты сервисов объектов через интернет. С помощью REST доступно не только редактирование, этот интерфейс удобен для выполнения настроек, поскольку реализация сервиса геометрии с помощью REST позволяет использовать многие распространенные методы редактирования, такие как вырезание, обрезка, расширение, автозаполнение полигонов и изменение формы. Также поддерживается версионное редактирование в сервисах объектов.
Прежние версии:
До выхода версии ArcGIS 10.1 можно было использовать сервисы, не объединенные в пул, для редактирования в рамках модели длинных транзакций. В сервисе объектов все операции являются операциями без сохранения состояния, это значит, что откат транзакций на уровне базы данных невозможен (однако это можно реализовать в логике приложения). Это не мешает выполнять операции отмены/повтора, как с веб-интерфейсами ArcGIS web APIs.
Реализация бизнес-логики в геообработке
В некоторых ГИС-приложениях имеются специальные наборы инструментов для реализации расширенной геоинформационной бизнес-логики. Эти инструменты могут предсказать объем добытой древесины в лесу, определить подходящие участки для ресторана или оценить зоны распространения токсичного облака. Для этого многие разработчики использовали пользовательский код.
Во многих случаях такие процессы можно отразить в ModelBuilder, где можно графически связать инструменты в единую "цепь". Такие модели геообработки можно предоставлять в качестве веб-сервисов и использовать в веб-приложениях. Преимущества этого очевидны: использование сервиса геообработки позволяет значительно сократить необходимый объем программирования. Кроме того, можно использовать преимущества асинхронного выполнения сервисов геообработки, чего непросто добиться в своем коде SDE.
Помимо гибкости, которая обеспечивается наличием тысяч готовых инструментов, которые можно сочетать в ModelBuilder, геообработка дает возможность разрабатывать собственные инструменты. Самый простой способ – это создание скриптов Python, которые могут выполняться самостоятельно либо в сочетании с другими инструментами в модели. Выше в данном разделе описывается такой пример с использованием модуля ArcPy для создания высококачественных карт через Интернет.
При использовании Python или другого языка программирования преимущество создания пользовательских инструментов состоит в том, что их можно использовать повторно в других рабочих процессах, поскольку они ведут себя точно так же, как и любой другой готовый инструмент. Кроме того, ваш пользовательский код может исполняться в модели асинхронного выполнения сервисов геообработки, которая весьма удобна для долговременных процессов.
Выполнение геометрических вычислений
Сервисы геообработки несут в себе полезное, рациональное зерно, но они больше не являются необходимым для выполнения операций геометрии.
API-интерфейсы Esri, такие как ArcGIS Maps SDK for JavaScript и SDK ArcGIS Runtime, предлагают обширные библиотеки локальной геометрии, которые позволяют выполнять проекции, вычислять расстояния и т. д.
Если вы не собираетесь использовать эти клиентские API-интерфейсы, проверьте, предлагает ли сервис геометрии на основе SOAP или REST те методы, которые нужны именно вам. Сервис геометрии может выполнять базовые ГИС-операции, такие как буферизация, определение пространственных отношений и измерений длин и площадей. Вызов серии методов в сервисе геометрии и сочетание их с возможностями запросов картографических сервисов и клиентской логикой может оказаться проще и быстрее, чем использование сервиса геообработки.