【问题标题】:Apply SLD to WMS Layer by OpenLayers 3通过 OpenLayers 3 将 SLD 应用于 WMS 层
【发布时间】:2017-05-12 17:54:08
【问题描述】:

我想动态更改 WMS 层的 SLD。我可以通过 STYLES 参数应用 Geoserver 保存的 SLD,但是当我想通过 SLD_BODY 应用 SLD 时,它发送请求但没有任何反应。我认为一切都很好,但 SLD 不适用于图层。代码如下:

var SLD = '<?xml version="1.0" encoding="UTF-8"?>'+
'<StyledLayerDescriptor version="1.0.0" 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"'+
    'xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">'+
    '<NamedLayer>'+
    '<Name>pmo:'+ layer.Name + '</Name>'+
    '<UserStyle>'+
        '<Name>pmo:' + layer.Name + '</Name>' +
        '<Title>A small red flag</Title>'+
        '<Abstract>A sample of how to use an SVG based symbolizer</Abstract>'+
        '<FeatureTypeStyle>'+
        '<Rule>'+
            '<Title>Red flag</Title>'+
            '<PointSymbolizer>'+
            '<Graphic>'+
                '<ExternalGraphic>'+
                '<OnlineResource xlink:type="simple" xlink:href="burg02.svg" />'+
                '<Format>image/svg+xml</Format>'+
                '</ExternalGraphic>'+
                '<Size>'+
                '<ogc:Literal>20</ogc:Literal>'+
                '</Size>'+
            '</Graphic>'+
            '</PointSymbolizer>'+
        '</Rule>'+
        '</FeatureTypeStyle>'+
    '</UserStyle>'+
    '</NamedLayer>'+
    '</StyledLayerDescriptor>';
    SLD = encodeURI(SLD);

    var source = layer.WMSLayer.getSource();
    source.updateParams({ 'STYLES': '' ,'SLD_BODY': SLD });

【问题讨论】:

    标签: openlayers-3 geoserver sld


    【解决方案1】:

    请代替你的 sld 替换这个

    var sld='<?xml version="1.0" encoding="UTF-8"?><StyledLayerDescriptor version="1.0.0" 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" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"><NamedLayer><Name></Name><UserStyle><Name></Name><Title>A small red flag</Title><Abstract>A sample of how to use an SVG based symbolizer</Abstract><FeatureTypeStyle><FeatureTypeName>Feature</FeatureTypeName><SemanticTypeIdentifier>generic:geometry</SemanticTypeIdentifier><SemanticTypeIdentifier>simple</SemanticTypeIdentifier><Rule><Title>Red flag</Title><PointSymbolizer><Graphic><ExternalGraphic><OnlineResource xlink:type="simple" xlink:href="https://svn.osgeo.org/qgis/trunk/qgis/images/svg/gpsicons/anchor.svg" /><Format>image/svg+xml</Format></ExternalGraphic><Size><ogc:Literal>20</ogc:Literal></Size></Graphic></PointSymbolizer></Rule></FeatureTypeStyle></UserStyle></NamedLayer></StyledLayerDescriptor>' 
    

    【讨论】:

    • 我将 STYLES 更改为未定义,我向 Geoserver 发送请求并收到此错误:java.lang.RuntimeException: org.xml.sax.SAXParseException; lineNumber 我调试字符串,这是因为我发送颜色的 # 字符。我不知道我应该如何纠正它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多