Skip To Content

Альтернативы расширениям серверных объектов

Иногда широта возможностей инструментов разработчиков 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 SDKs for Game Engines, предлагают обширные локальные библиотеки геометрии, которые позволяют выполнять такие операции, как перепроектирование геометрий и расчет расстояний.

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