Для каждого веб-приложения ГИС требуется набор оперативных слоев, с которыми может работать определенная группа пользователей. Обычно данные оперативного слоя ограничиваются несколькими фокус-слоями и отображаются только тогда, когда пользователи изменяют масштаб до определенного уровня. Потоковые данные отправляются клиенту, а затем отображаются и управляются клиентом.
Такая модель используется по нескольким причинам. Во-первых, оперативные слои зачастую являются динамическими и поэтому обычно не должны предварительно кэшироваться. Во-вторых, пользователи ожидают от оперативных слоев хорошей реакции на выполняемые действия, более быстрой прорисовки, отчетов о деталях по щелчку мыши и отображения ссылок на определенные функции. В-третьих, оперативные слои должны быть выполнены в той же системе координат, что и сервис базовой карты. Это особенно важно, поскольку несоответствие систем координат может привести к возникновению проблем наложения, снижению производительности и возникновению ошибок в веб-приложении ГИС.
Динамическое отображение и взаимодействие с пользователем на клиентской стороне может быть реализовано с помощью ArcGIS API for JavaScript.. Однако данные оперативного слоя иногда могут быть довольно обширными и могут с трудом отображаться браузером. В этом случае данные оперативного слоя должны отображаться сервером.
Три метода публикации рабочих слоев карты
Существует несколько вариантов публикации рабочих слоев карты на сервере:
- С помощью запросов на выборку поднабора пространственных объектов, которые удовлетворяют определенным критериям. Затем результаты запроса отображаются при помощи графики карты и текста
- В виде динамического картографического сервиса
- В виде кэшированного картографического сервиса
Отображение результатов запроса в виде графики карты и текста
Одним из наиболее эффективных механизмов отображения оперативной информации является использование результатов запроса. На ГИС-сервер отправляется запрос, который возвращает набор пространственных объектов в виде небольшого набора записей. Результаты запроса, которые возвращаются с сервера, включают в себя набор пространственных объектов, их координаты и набор атрибутов каждого пространственного объекта. Эти результаты отображаются на карте в виде интерактивной графики с описательной информацией, с которой можно работать, создавать диаграммы, получать итоговые данные, и которую можно использовать в качестве гиперссылок для доступа к более подробной информации по каждому пространственному объекту. При таком подходе, чтобы создать результирующий слой карты, необходимо запрограммировать приложение. ArcGIS API for JavaScript содержит информацию по выполнению запросов и отображению результатов на карте в виде графики на клиентской стороне.
В виде динамического картографического сервиса
Одним из типов картографических сервисов, которые можно публиковать, является динамический картографический сервис. Из названия сервиса понятно, что отображение слоя карты генерируется динамически. Другими словами, отображение рассчитывается и выдается сервером каждый раз, когда клиент осуществляет запрос к серверу на отображение картографического сервиса. Полученное в результате изображение карты отправляется в приложение, отправившее запрос, и накладывается на базовую карту.
Чтобы создать динамический картографический сервис, сначала необходимо создать документ ArcMap, в котором содержится один или несколько сфокусированных слоев. Затем можно опубликовать его как картографический сервис. Получившийся в результате картографический сервис будет использован в вашем веб – приложении ГИС, позволяя пользователям работать с оперативной информацией.
Преимуществом динамических картографических сервисов является то, что они сообщают рабочему слою обновленный и точный статус. Однако динамические слои карты зачастую являются самым медленным способом прорисовки карты в Интернете.
В виде кэшированного картографического сервиса
Еще одним вариантом публикации рабочих слоев карты является использование кэшированного картографического сервиса, когда отображение карты предварительно рассчитывается и сохраняется в кэше карты. В этом случае нет необходимости выполнять повторный расчет отображения оперативного слоя карты каждый раз, когда клиент запрашивает карту у сервера. Вместо этого необходимые листы карты извлекаются с сервера, в результате чего значительно повышается производительность и масштабируемость.
В некоторых случаях рабочие слои карты являются более статичными и изменяются реже. Это означает, что их можно обновлять периодически с помощью выполнения предварительного расчета карты, в противоположность расчету новой карты каждый раз, когда она запрашивается с сервера. Таким образом, любой пользователь получает доступ к более быстродействующему и более эффективному картографическому сервису.
Кэшированные картографические сервисы также обладают хорошей масштабируемостью, то есть эффективно отвечают на запросы при множестве параллельных обращений к серверу. Если ожидаются большие объемы пользовательского трафика, тогда, возможно, стоит кэшировать слой, даже если возникнет необходимость часто обновлять кэш.
В условиях нехватки времени или дискового пространства для создания всех листов для кэша можно предварительно создать некоторые листы, а остальные создавать по запросу. Когда первый клиент обращается к веб – приложению ГИС, кэш карты рассчитывается и выстраивается для запрашиваемой области (для набора листов карты). Любой другой пользователь, обращающийся к тем же листам карты, просто использует новый кэш карты. Каждый раз, когда пользователь осуществляет запрос, извлекается этот кэшированный лист карты, если он существует. В противном случае лист рассчитывается и кэшируется на диске. Только первому пользователю необходимо вычислить отображение карты, а другие пользователи могут затем обращаться к кэшированной карте оперативного слоя.
Подробные сведения по способам создания кэшированных картографических сервисов см. в разделе Что такое кэширование карты?.