Skip to main content

Использование дескрипторов стилей слоев с сервисами WMS

Дескрипторы слоев со стилем (SLD) помогают публиковать схемы символов для сервиса WMS с помощью спецификации XML, определенной Open Geospatial Consortium, Inc. (OGC). Или же клиенты сервиса могут использовать собственные SLD для применения символов по их выбору.

Файлы SLD и стили SLD

Файл SLD — это файл XML, который использует синтаксис OGC SLD, что позволяет понимать его при взаимодействии сервера и клиента.

Стили SLD физически хранятся в файле SLD. Один стиль SLD определяет правила символов для заданного набора объектов в указанном слое WMS. У одного стиля может быть несколько правил, а у каждого правила может быть один фильтр, описывающий, какие объекты должны отображаться, и несколько механизмов отображения символов, описывающих отображение этих объектов.

Далее представлен пример документа SLD XML:

<sld:StyledLayerDescriptor version="1.0.0" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">
<!--
ESRI_StatesCitiesRivers_USA @
http://sampleserver1.arcgisonline.com/arcgis/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/WMSServer?
-->
<sld:NamedLayer>
<!--
layer "2" is the "cities" point layer in the WMS service
-->
<sld:Name>2</sld:Name>
<sld:UserStyle>
<!--
 style should be applied on layer "2", reference the style by it's name "pointSymbolizer"
-->
<sld:Name>pointSymbolizer</sld:Name>
<sld:Title>pointSymbolizer</sld:Title>
<sld:FeatureTypeStyle>
 <sld:Rule>
  <sld:PointSymbolizer>
   <sld:Graphic>
    <sld:Mark>
     <!-- uses a circle to mark a city -->
     <sld:WellKnownName>circle</sld:WellKnownName>
     <!-- fill circle with color #666666 -->
     <sld:Fill>
      <sld:CssParameter name="fill">#666666</sld:CssParameter>
      <sld:CssParameter name="fill-opacity">1</sld:CssParameter>
     </sld:Fill>
     <!-- circle boundary with color #666666 -->
     <sld:Stroke>
      <sld:CssParameter name="stroke">#666666</sld:CssParameter>
      <sld:CssParameter name="stroke-opacity">1</sld:CssParameter>
      <sld:CssParameter name="stroke-width">1</sld:CssParameter>
     </sld:Stroke>
    </sld:Mark>
    <!-- circle opacity 1.0 -->
    <sld:Opacity>1</sld:Opacity>
    <!-- circle size "3" -->
    <sld:Size>3</sld:Size>
    <sld:Rotation>0</sld:Rotation>
   </sld:Graphic>
  </sld:PointSymbolizer>
 </sld:Rule>
</sld:FeatureTypeStyle>
</sld:UserStyle>
</sld:NamedLayer>
</sld:StyledLayerDescriptor>

Реализация WMS SLD в ArcGIS Server основана на спецификации реализации дескриптора стиля слоя (SLD) OGC. Полный обзор SLD см. на странице Дескриптор стиля слоя на веб-сайте OGC.

Поддержка WMS Styled Layer Descriptor (SLD) в ArcGIS Server

ArcGIS Server поддерживает спецификацию WMS Styled Layer Descriptor (SLD) версии 1.0.0. Полный обзор SLD см. на странице Styled Layer Descriptor на веб-сайте OGC.

Ниже перечислены конкретные элементы SLD, поддерживаемые и не поддерживаемые сервисами ArcGIS Server WMS.

Поддерживаемые элементы SLD

Сервисы ArcGIS Server WMS поддерживают следующие элементы SLD:

Неподдерживаемые элементы SLD

Сервисы ArcGIS Server WMS не поддерживают следующие элементы SLD:

Обозначитель (symbolizer) объектов и тип геометрии

В версии 10.7 обозначители объектов LineSymbolizer, PolygonSymbolizer и PointSymbolizer могут использоваться для обозначения геометрии объектов любого типа. Например, PointSymbolizer может использоваться для обозначения полигонального объекта. В следующей таблице приводится список режимов, когда используемый обозначитель не совпадает с типом собственной геометрии:

Линия

Полигон

Точка

LineSymbolizer

  • Контур, обозначенный с помощью Штриховки, указан в LineSymbolizer.

  • Прозрачное заполнение.

  • Сплошная черта с использованием Штриховки, заданной в LineSymbolizer.

PolygonSymbolizer

  • Сплошная черта с использованием Штриховки, заданной в PolygonSymbolizer.
  • Квадратный символ маркера, заполненный с помощью Заполнителя, и контур, заполненный с помощью Штриховки, заданные в PolygonSymbolizer.

  • Элемент GraphicFill не поддерживается.

PointSymbolizer

  • Отдельный символ маркера, обозначенный с помощью символа, указанного в PointSymbolizer, и помещенный в центр линии.

  • Элемент Graphic не поддерживается.

  • Отдельный символ маркера, обозначенный с помощью символа, указанного в PointSymbolizer, и помещенный в центроид полигона.

  • Элемент Graphic не поддерживается.

Публикация нескольких стилей с помощью SLD

Можно использовать следующую процедуру для публикации нескольких стилей для слоев WMS с помощью SLD:

  1. Создайте сервис WMS с помощью сгенерированных системой файлов функций.

  2. Создайте XML-документ SLD, определяющий несколько стилей для каждого слоя в сервисе WMS.

  3. Привяжите SLD XML к сервису WFS.

Для этого выполните следующие шаги:

ArcGIS Server Manager:

  1. Опубликуйте сервис WMS, следуя инструкциям в разделе Сервисы WMS.

  2. Создайте документ XML с синтаксисом SLD, определяющий дополнительные стили, для каждого слоя WMS, который нужно опубликовать. Этот документ SLD XML можно сохранить на локальный диск или предоставить к нему доступ по URL.

  3. Откройте Manager и выполните вход. Справка по этому шагу приведена в разделе Вход в Manager.

  4. Щелкните Сервисы > Управление сервисами.

  5. В модуле Управление сервисами найдите свой сервис и щелкните Редактировать . Если вы не видите свой сервис в списке, возможно, он находится во вложенной папке в папке Site (root).

  6. В модуле Редактирование перейдите на вкладку Возможности.

  7. В списке функций щелкните WMS и убедитесь, что функции WMS активированы.

  8. В списке Конфигурация WMS (WMS configuration) вы увидите текстовое окно Путь SLD или URL (SLD Path or URL). Введите URL документа SLD XML или используйте обозреватель файлов для поиска SLD XML на диске.

  9. Нажмите Сохранить и перезапустить. Внесенные в сервис изменения будут применены незамедлительно.

Примечания:

Чтобы проверить правильность привязки SLD XML к сервису WMS, выполните одно из следующих действий:

  • Отправьте запрос WMS GetCapabilities в браузере. В ответе XML должен быть один элемент