繁体   English   中英

具有外部 SLD 的 Geoserver 栅格

[英]Geoserver raster with external SLD

我想使用外部 SLD(托管在我的服务器中)来符号化 Geoserver 中的栅格。

如果在 Geoserver 中用作默认样式,则下面的 SLD 有效。 如果我复制它(更改一些颜色)并放在 Geoserver 之外,另存为 SLD(或 XML),并使用 SLD=https://my_server/mySLD.sld 调用 GetMap,我得到的地图仍然是“默认的,Geoserver ' 风格

<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"
xmlns:se="http://www.opengis.net/se">
  <NamedLayer>
    <Name>my_schema:my_layer</Name>
    <UserStyle>
      <FeatureTypeStyle>
               <Rule>
                    <RasterSymbolizer>
                        <Geometry>
                           <PropertyName>GRAY_INDEX</PropertyName>
                        </Geometry>
                        <Opacity>1</Opacity>
                        <ColorMap>
                           <ColorMapEntry color="#E69800" label="1" opacity="0.0" quantity="0.0"/>                     
                            <ColorMapEntry color="#1b4bde" label="Building" opacity="1.0" quantity="1.0"/>
                            <ColorMapEntry color="#bcbcbc" label="Ground cover" opacity="1.0" quantity="2.0"/>
                                 
                    </ColorMap>
       </RasterSymbolizer>
      </Rule>
      </FeatureTypeStyle>
    </UserStyle>
    </NamedLayer>    
  </StyledLayerDescriptor>

很快,WMS 调用将是这样的(也尝试使用 STYLES 参数) https://my_geoserver_url/wms?service=WMS&version=1.1.0&request=GetMap&layers=my_schema:my_layer&STYLES=&SLD=https://my_server/my_sld.sld&transparent=true&bbox=...&format=image/png

我这样做是为了在矢量数据中进行动态过滤并且一切都很好(SLD 是通过 PHP 动态创建的),所以我想知道问题是否在于无法使用 RASTER 数据

您正在尝试在库模式下操作

库模式下的样式查找操作如下:

  • 对于图层列表中的每个图层,应用的样式要么是样式列表中指定的命名样式(如果存在),要么是 layerdefault 样式

  • 对于命名样式,如果外部样式文档具有匹配图层名称和样式名称的<NamedLayer>...<UserStyle> ,则使用它。 否则,将在目录中搜索样式名称。 如果在那里找不到,则会发生错误。

  • 对于默认样式,将搜索外部样式文档以查找具有图层名称的<NamedLayer>元素。 如果它包含一个<UserStyle><IsDefault>元素的值为 1,则使用该样式。 否则,将使用图层的默认服务器样式(必须存在)。

因此,您要么需要在styles参数中提供命名样式,要么通过向其添加<IsDefault>1</IsDefault>使您的样式成为默认样式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM