[英]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.