Skip to main 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 SDK for Game Engines — предлагают обширные локальные библиотеки геометрии, позволяющие выполнять операции, такие как перепроецирование геометрий и вычисления расстояний.

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