Стилизация wms по параметру запроса

в общем:
Можно ли по-разному стилизовать некоторые функции wms из одного запроса wms на основе фильтра cql или другого параметра?
особенно:
на запрос wms, возвращая растр набора объектов (то есть точек, обозначенных красными точками), функции wms
я бы хотел, чтобы геосервер по-разному стилизовал (синяя точка) только одну особенность, определяемую параметром http-req, отправленным с запросом wms

сохраняя остальные в коллекции со стилем по умолчанию
и избегая совпадения двух wms:

2 ответа

Решение

Более быстрый (и, вероятно, более простой) способ, чем предлагает @Fmba, - запросить слой дважды, один раз с цветом по умолчанию и второй раз с фильтром и стилем выделения. Вы можете сделать это в одном запросе или сделать два запроса, чтобы браузер мог кэшировать слой по умолчанию и повторно получать только блики.

Для первого запроса это будет выглядеть примерно так:

http://....../wms?service=wms&.....&layers=dots,dots&styles=,highlight&cql_filter=INCLUDE;INTERSECT(the_geom,%20POINT%20(-74.817265%2040.5296504))

Это запрашивает слой (точки) дважды, один раз со стилем по умолчанию (или вы также можете использовать именованный стиль здесь), а затем со стилем выделения. Наконец, вы должны указать два фильтра (первый верный, чтобы вернуть все).

в то время как во втором вы просто добавите еще один слой, как обычно.

Для этого вы можете использовать как фильтры, так и подстановку переменных. Ваш SLD может быть примерно таким:

<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
 xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
 xmlns="http://www.opengis.net/sld"
 xmlns:ogc="http://www.opengis.net/ogc"
 xmlns:xlink="http://www.w3.org/1999/xlink"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <!-- a Named Layer is the basic building block of an SLD document -->
  <NamedLayer>
    <Name>default_point</Name>
    <UserStyle>
    <!-- Styles can have names, titles and abstracts -->
      <Title>Default Point</Title>
      <Abstract>A sample style that draws a point</Abstract>
      <FeatureTypeStyle>
        <Rule>
          <Name>rule1</Name>
          <Title>Red Square</Title>
            <PointSymbolizer>
              <Graphic>
                <Mark>
                  <WellKnownName>square</WellKnownName>
                  <Fill>
                    <CssParameter name="fill">#FF0000</CssParameter>
                  </Fill>
                </Mark>
              <Size>6</Size>
            </Graphic>
          </PointSymbolizer>
        </Rule>
        <Rule>
          <Name>rule2</Name>
          <Title>Blue Square</Title>
          <ogc:Filter>
           <ogc:PropertyIsEqualTo>
            <ogc:PropertyName>name</ogc:PropertyName>
            <ogc:Function name="env">
               <ogc:Literal>element</ogc:Literal>
            </ogc:Function>
            </ogc:PropertyIsEqualTo>
            </ogc:Filter>
            <PointSymbolizer>
              <Graphic>
                <Mark>
                  <WellKnownName>square</WellKnownName>
                  <Fill>
                    <CssParameter name="fill">#0000FF</CssParameter>
                  </Fill>
                </Mark>
              <Size>6</Size>
            </Graphic>
          </PointSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

Обратите внимание, что мы используем параметр с именем 'element' (как мы определили в SLD) в параметре 'env' (в конце запроса), которому вы можете присвоить значение в запросе wms, поэтому только функция с значение name_yo_want_to_filter для атрибута name будет отображаться синим цветом, например так:

http://your_geoserver/wms?LAYERS=your_layer&STYLES=&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG%3A25830&BBOX=177329.45520721,4198063.2254456,177681.24924735,4198495.164411&WIDTH=417&HEIGHT=512&env=element:name_yo_want_to_filter

Имейте в виду, что 'fid' не будет допустимым параметром, поскольку он обычно скрыт, поэтому геосервер не примет его фильтр PropertyIsEqualTo.

Ссылка: http://docs.geoserver.org/latest/en/user/styling/sld-extensions/substitution.html Ссылка: http://docs.geoserver.org/latest/en/user/styling/sld-reference/filters.html

Другие вопросы по тегам