Рекомендации по созданию карт
Чтобы сделать карту доступной через Интернет, необходимо создать карту в ArcMap, опубликовать ее на сайте ArcGIS Server, а затем использовать полученный картографический сервис в клиентском приложении. Для использования многих функций картографических сервисов требуется подготовка на этапе создания. В данном разделе описываются рекомендации по созданию карты, которая будет опубликована на сайте.
Общие подсказки
Следующие подсказки важны для всех документов карты, которые будут опубликованы на сайте ArcGIS Server:
Избегайте использования не алфавитно-цифровых символов (кроме пробелов) в именах фреймов данных или слоев. Когда вы публикуете сервис, имена фреймов данных и слоев иногда используются в URL-адресах, именах кэшированных папок и в параметрах запросов к веб-сервисам. Символы, не являющиеся алфавитно-цифровыми, в этих случаях могут быть интерпретированы неверно. Будьте особенно внимательны при публикации сервиса с использованием спецификаций OGC. Например, изучите раздел Доступные свойства WMS-сервиса, чтобы получить список символов, которые нельзя использовать с сервисами WMS.
Удаление конфиденциальной информации из свойств документов. ArcGIS Server содержит Services Directory, позволяющий пользователям просматривать содержимое сервера и получать метаданные о сервисах. Даже если вы планируете предоставить общий доступ к сервисам через Services Directory (конфигурация по умолчанию), в документе карты могут быть конфиденциальные сведения, которые вы хотите скрыть. Чтобы узнать, какая информация может быть доступна, откройте документ карты в ArcMap и выберите команды Файл (File) > Свойства документа карты (Map Document Properties) в главном меню. При публикации карты вы можете удалить все имена авторов, комментарии и другую информацию, которая не должна быть видна в редакторе сервисов. Измените информацию в соответствии с назначением и целевой аудиторией картографического сервиса.
Удаление слоев картографического сервиса из документа карты. Публикация документа карты с интегрированным слоем сервиса не допускается.
Явно установите фон фрейма данных вместо того, чтобы оставлять для фона по умолчанию значение NULL. Картографический сервис будет воспринимать фоновый цвет как прозрачный, так что избегайте фона где бы то ни было на карте. Чтобы белые области на карте не становились прозрачными, вы можете установить фоновый цвет, очень близкий к белому (например RGB 254, 255, 255).
Можно установить фоновый цвет на закладке Фрейм (Frame) в диалоговом окне Свойства фрейма данных (Data Frame Properties).
Можно ли кэшировать карту для улучшения производительности?
Если карта содержит данные, которые вряд ли будут изменяться, следует рассмотреть возможность кэширования карты для улучшения производительности. При кэшировании карты вы создаете набор предварительно отрисованных изображений карты на определенных уровнях масштаба. Фактическое кэширование происходит после публикации карты в качестве картографического сервиса. Но если вы знаете, что будете кэшировать карту, это влияет на процесс ее создания. Вы хотите создать карту так, чтобы она выглядела хорошо на всех масштабах, которые вы будете кэшировать. Можно использовать любые картографические инструменты без влияния на производительность, так как кэшированные листы – это всего лишь изображения данных, а фактические механизмы отрисовки и надписывания после создания кэша не используются.
Если вы не можете кэшировать карту, механизмы отрисовки и надписывания влияют на производительность картографического сервиса. Для получения более подробной информации см. раздел Что такое кэширование карты?
Советы по работе с некэшированными картами
Кэш карты следует создавать при любой возможности. Однако при наличии больших объемов данных, которые часто изменяется, создание и обслуживание кэша может оказаться невозможным. В этом случае можно воспользоваться подсказками, представленными ниже, для повышения производительности карты. В процессе публикации документа карты вы можете проанализировать карту с помощью редактора сервисов. Это позволяет быстро определить способы повышения производительности документа карты.
Установите визуализацию слоев данных в зависимости от масштаба: используйте визуализацию в зависимости от масштаба, чтобы убедиться, что ненужные слои не отображаются при изменении масштаба карты. Детализированные слои могут лучше подходить только при более крупном масштабе карты.
-
Удалите неиспользуемые слои и фреймы данных: посмотрите на карту в виде данных и в виде компоновки и убедитесь, что в документе карты нет фреймов данных и слоев, никак не связанных с целью карты. Например, если вид компоновки страницы содержит фреймы данных, которые не будут видны в любом приложении, использующем сервис, удалите их.
-
Используйте запросы определений соответствующим образом: запрос определения может действовать как фильтр для ограничения объема данных на карте, тем самым ускоряя ее отображение. Например, в случает, когда вы создаете карту штата, а класс пространственных объектов содержит данные на всю страну, можно применить определяющий запрос для отображения только тех объектов, которые попадают в пределы границ штата. Помните, что сложные запросы могут отрицательно повлиять на производительность.
Упростите символы слоя: отображение сложных символов может занять намного больше времени, чем отображение простых символов. Используйте простые линейные символы и символы заливки, избегая символов со множеством слоев, сложными шаблонами, штриховыми линиями и контурами. Символы дорожных знаков также могут замедлять отображение.
При использовании символа заполнения рисунком можно улучшить производительность за счет применения файла EMF вместо BMP.
Простой способ упростить символы на карте – использовать стиль ESRI_Optimized. Он содержит линейные символы и символы заливки, которые были созданы для того, чтобы не снижать производительность системы при отрисовке сложных символов, и в тоже время не снижать качество визуального отображения символов и знаков, по сравнению с их эквивалентами из стиля Esri. Сведения о работе с этим стилем см. в разделе справки ArcGIS Организация содержимого стиля.
При создании кэшированного картографического сервиса упрощение карты не влияет на скорость отображенной завершенной карты. Это влияет только на скорость создания кэша. Если кэш и так не занимает много времени, можно не беспокоиться об упрощении символов.
-
Используйте аннотации вместо надписей: так как надписи требуют от компьютера расчета их размещения, в общем случае слой аннотации будет работать быстрее.
-
Упростите надписи: если карта содержит надписи, используйте веса в конфликтах надписей и объектов с осторожностью. Гало, смещения и другие эффекты надписей также уменьшают производительность.
Настройте визуализацию надписей в зависимости от масштаба: при приближении (увеличении масштаба) карты необходимо прорисовывать большее количество надписей, что занимает время. Изучите свою карту и решите, нужно ли отображать некоторые из надписей в меньших масштабах.
-
Используйте одну систему координат для данных и карт: если у исходных данных и документа карты разные системы координат, данные должны проецироваться в реальном времени, что замедляет производительность. Для достижения оптимальной производительности используйте одну систему координат для данных и документа карты. Если это невозможно, убедитесь, что соответствующие географические преобразования применены к слоям, которые необходимо проецировать в реальном времени.
Измените время, в течение которого браузер может использовать ответ из кэша – когда карта просматривается в веб-браузере, изображение карты, полученное с сервера, кэшируется браузером и повторно используется в течение некоторого периода времени. В зависимости от использования сервиса карт и связанных с ним данных в приложении, может потребоваться изменить время использования кэшированного ответа. Подробнее см. ниже, в разделе Повышение скорости отображения картографического сервиса.
Увеличение скорости отображения картографических сервисов
Когда клиенты отправляют запросы к ArcGIS Server для отображения картографического сервиса, ответ сервера обычно кэшируется браузером и повторно используется в течение некоторого периода времени. Это помогает ArcGIS Server добиться максимально возможной скорости отображения картографического сервиса. Однако в зависимости от использования картографического сервиса и связанны с ним данных в приложении, может потребоваться изменить время использования кэшированного ответа. Это можно сделать с помощью добавления свойства cacheControlMaxAge к JavaScript Object Notation (JSON) сервиса.
Как используется свойство cacheControlMaxAge
Ответы картографического сервиса ArcGIS Server содержат тег объекта (ETag) и заголовок Cache-Control. Значение ETag является уникальным идентификатором ответа. Заголовок Cache-Control имеет значение максимальной длительности, который сообщает браузеру максимальный период времени в течение которого можно повторно использовать кэш. Это значение управляется свойством cacheControlMaxAge.
При повторе запроса, когда максимальное время действия кэша еще не прошло, браузер использует кэшированный ответ, не отправляя запрос к серверу. Если максимальное время действия кэша уже превышено, браузер должен отправить на сервер запрос и присвоить ответу в кэше заголовок IF-NONE-MATCH с соответствующим значением ETag. ArcGIS Server оценивает запрос и использует значение ETag для определения изменения запроса. Если ответ сервера отличается от копии в браузере, сервер отправит браузеру полностью новый ответ. Если ответ сервера идентичен копии в браузере, сервер сообщает браузеру, что можно продолжать использовать ответ в кэше.
Задание значения свойства cacheControlMaxAge
Как администратор ArcGIS Server вы можете задать свойство cacheControlMaxAge, чтобы указать, как долго браузер может использовать кэшированный ответ. Снижая для ArcGIS Server необходимость отправки полного ответа, вы делаете кэш браузера более эффективным, оптимизируете приложения и экономите пропускную способность канала.
Для картографических сервисов по умолчанию используется значение 0. Это означает, что браузер всегда отправляет запрос, а ArcGIS Server обрабатывает его и отправляет браузеру полный ответ, если данные изменились. Это значение подходит для большинства приложений.
Для картографических сервисов с частой сменой наборов данных или символов, рекомендуется использовать значение 5 минут (300 секунд). В приложениях с анимацией или временными данными следует рассмотреть возможность увеличения этого значения, чтобы анимация выполнялась более плавно.
Чтобы добавить свойство cacheControlMaxAge к сервису и задать для него значение по умолчанию, сделайте следующее:
- В веб-браузере откройте директорию ArcGIS Server Administrator и войдите под именем пользователя с правами администратора. Адрес URL в формате http://gisserver.domain.com:6080/arcgis/admin.
- Щелкните services и выберите картографический сервис, который вы хотите изменить, в списке Сервисы (Services). Если сервис не отображается в списке, он может располагаться в папке в Корневой папке (Root folder).
- Прокрутите вниз страницу Service – <service name> (<service type>) и щелкните редактировать (edit).
- В диалоговом окне Свойства сервиса (Service Properties) найдите раздел "properties" сервиса JSON.
- Добавьте свойство cacheControlMaxAge в раздел и задайте для него значение (в секундах), например:
"properties": { "cacheControlMaxAge": "300",
- Щелкните Сохранить изменения (Save Edits).
- На странице Service – <service name> (<service type>) проверьте, что свойство cacheControlMaxAge и указанное для него значение отображаются в разделе Свойства (Properties).
Вы будете просматривать эту карту на мобильном устройстве?
Функция Мобильный доступ к данным (Mobile Data Access) позволяет извлечь содержимое картографического сервиса для его просмотра на планшетном компьютере или устройстве Windows Mobile. Если вы знаете, что карта будет просматриваться на мобильном устройстве, упростите ее. Рассмотрите возможность генерализации данных, например сглаживания полигонов и сокращения разрешения растров для фоновых или базовых слоев. Это позволяет ускорить отображение карты.
Вы будете выполнять сетевой анализ на сервере с помощью этой карты?
Если вы собираетесь использовать эту карту для сетевого анализа на сервере, вам потребуется включить слоя сетевого анализа, ссылающийся на набор сетевых данных. При публикации картографического сервиса вы можете включить функцию Сетевой анализ (Network Analysis). При этом будет создан веб-сервис для выполнения задач сетевого анализа в вашей карте.