Openlayers样式化WMS与外部文件的SLD问题



我面临的问题是如何使用SLD格式的样式从geoserver样式化WMS。我想添加SLD定义为变量${SLD}从外部。js文件:

const sld = `<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:gml="http://www.opengis.net/gml" version="1.0.0" xmlns:ogc="http://www.opengis.net/ogc" xmlns:sld="http://www.opengis.net/sld">
<sld:UserLayer>
...  

<sld:ColorMap type="ramp">
<sld:ColorMapEntry quantity="0"  label ="0" color="#000000"/>
<sld:ColorMapEntry quantity="1200" label="1200" color="#d7191c"/>
</sld:ColorMap>
...

</sld:UserLayer>
</StyledLayerDescriptor>

export default sld

main.js中的代码是:


import sld from "./SLD_styles/style1"
...
const wmsSource2 = new TileWMS({
url: "https://...",
params: {
LAYERS: "workSpace:layerName",
STYLES: undefined,
SLD_BODY: encodeURIComponent(sld),
},
serverType: "geoserver",
crossOrigin: "anonymous",
})

我试过很多方法来达到那个目的,但都没有成功。谁能告诉我,SLD到底应该是什么样子?可能我在匹配名称,isDefault参数等方面有问题。

谢谢,彼得亚雷

Import sld变量工作正常。我已经尝试使用SLD: url从。SLD文件导入,但也没有成功。

复选框样式;和"图书馆模式";(SLD规范的一部分)在GeoServer文档中:

https://docs.geoserver.org/maintain/en/user/styling/sld/working.html外部样式

特别地,你的样式可能没有被使用,因为你在库模式:

  • SLD必须使用与LAYERS参数
  • 中使用的名称相同的NamedLayer。
  • UserStyle必须与STYLES中使用的相同名称匹配(或者跳过使用STYLES,并在SLD中将样式标记为默认)

下面是一个使用URL中的样式名的工作示例:

https://gs-main.geosolutionsgroup.com/geoserver/topp/wms?service=WMS& version = 1.1.0&请求= GetMap&层= topp % 3 astates& bbox = -124.73142200000001% 2 c24.955967 % 2 c - 66.969849 % 2 c49.371735&宽度= 768,身高= 330,srs = EPSG % 3 a4326&风格= popgray&格式=应用程序/openlayers& sld = https://gs-main.geosolutionsgroup.com/geoserver/styles/popgray.sld

相关内容

  • 没有找到相关文章

最新更新