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