目录

要点

使用

取标准样式

修改为自定义规则

GetMap使用

URL调用方式

Openlayers调用方式

GetLegendGraphic使用

访问报错问题


geoserver的WMS服务支持url参数上传sld_body来动态定义访问图层的样式,本文以GetMap以及GetLegendGraphic为例进行说明。


要点

  • 一定要注意样式格式的正确性,样式不能有缩进,否则容易报错
  • 图层名称一定要在UserLayer里的Name体现
  • 样式文本不要过大,url有字数上限
  • 尽量使用程序生成需要的样式文本,不要自行编辑

使用

取标准样式

先从geoserver取下来标准的polygon样式,目的是保证格式正确性,标准样式如下:

<?xml version="1.0" encoding="UTF-8"?>
<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_polygon</Name><UserStyle><!-- Styles can have names, titles and abstracts --><Title>Default Polygon</Title><Abstract>A sample style that draws a polygon</Abstract><!-- FeatureTypeStyles describe how to render different features --><!-- A FeatureTypeStyle for rendering polygons --><FeatureTypeStyle><Rule><Name>rule1</Name><Title>Gray Polygon with Black Outline</Title><Abstract>A polygon with a gray fill and a 1 pixel black outline</Abstract><PolygonSymbolizer><Fill><CssParameter name="fill">#AAAAAA</CssParameter></Fill><Stroke><CssParameter name="stroke">#000000</CssParameter><CssParameter name="stroke-width">1</CssParameter></Stroke></PolygonSymbolizer></Rule></FeatureTypeStyle></UserStyle></NamedLayer>
</StyledLayerDescriptor>

修改为自定义规则

将Rule部分修改或扩充多个,以满足自身需求为准,举例:

<Rule><Name>rule1</Name><Title>my title</Title><Filter><And><PropertyIsGreaterThanOrEqualTo><PropertyName>key</PropertyName><Literal>1</Literal></PropertyIsGreaterThanOrEqualTo><PropertyIsLessThan><PropertyName>key</PropertyName><Literal>5</Literal></PropertyIsLessThan></And></Filter><PolygonSymbolizer><Fill><CssParameter name="fill">#00ff00</CssParameter><CssParameter name="fill-opacity">1.0</CssParameter></Fill><Stroke/></PolygonSymbolizer>
</Rule>

GetMap使用

URL调用方式

记得要将sld_body转换URLEncode,同时不需要写layer参数。

http://localhost:8080/geoserver/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&sld_body=<StyledLayerDescriptor%20xmlns%3D"http%3A%2F%2Fwww.opengis.net%2Fsld"%20xmlns%3Aogc%3D"http%3A%2F%2Fwww.opengis.net%2Fogc"%20xmlns%3Axlink%3D"http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink"%20xmlns%3Axsi%3D"http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance"%20version%3D"1.0.0"%20xsi%3AschemaLocation%3D"http%3A%2F%2Fwww.opengis.net%2Fsld%20StyledLayerDescriptor.xsd"><NamedLayer><Name>layer<%2FName><UserStyle><FeatureTypeStyle><Rule><Name>rule1<%2FName><Title>title<%2FTitle><Filter><PropertyIsLessThan><PropertyName>key<%2FPropertyName><Literal>5<%2FLiteral><%2FPropertyIsLessThan><%2FFilter><PolygonSymbolizer><Fill><CssParameter%20name%3D"fill">%23ff0000<%2FCssParameter><CssParameter%20name%3D"fill-opacity">1.0<%2FCssParameter><%2FFill><Stroke%2F><%2FPolygonSymbolizer><%2FRule><%2FFeatureTypeStyle><%2FUserStyle><%2FNamedLayer><%2FStyledLayerDescriptor>&WIDTH=256&HEIGHT=256&SRS=EPSG%3A4326&STYLES=&BBOX=106.171875%2C21.796875%2C106.5234375%2C22.1484375

Openlayers调用方式

同样不需要写layer参数。

var sld = '你的样式文本';var wms = new ol.layer.Tile({source: new ol.source.TileWMS({url: 'http://localhost:8080/geoserver/wms',params: {'VERSION': '1.1.1', sld_body: sld}})});

GetLegendGraphic使用

这里要写layer参数,因为是必填的。

http://localhost:8080/geoserver/wms?REQUEST=GetLegendGraphic&VERSION=1.0.0&FORMAT=image/png&WIDTH=20&HEIGHT=20&sld_body=你的样式文本

访问报错问题

一般都是sld_body引起的,建议先用标准的样式进行测试,逐步修改样式,使用XML格式化网站进行测试。

通过SLD_BODY动态改变geoserver的图层样式相关推荐

  1. [react] 写出React动态改变class切换组件样式

    [react] 写出React动态改变class切换组件样式 export default memo(function Demo(){const [clsName,setClsName] = useS ...

  2. 使用jquery动态改变checkbox选中和样式

    做权限选中的时候遇到: <div class="layui-form-item"><label class="layui-form-label" ...

  3. 点击echarts柱状图动态改变数据项颜色样式

    首先附上参考文章连接:https://blog.csdn.net/weixin_42870683/article/details/103528254添加链接描述 今天来实现点击echarts柱状图,动 ...

  4. 微信小程序开发——动态改变按钮背景颜色

    在wxss文件中可以简单地设置button的背景颜色和各种样式,然而,这样的样式设计不能够动态改变.那么,如何动态改变控件的样式呢?下面以button为例来介绍. 此方法不用修改wxss文件,首先,在 ...

  5. uniapp动态修改样式_掌握Photoshop图层样式技术

    凹凸贴图效果 "等等,什么?" 您会惊叹:""图层样式"菜单中没有凹凸贴图效果!" 的确如此,但是通过将"图案覆盖"和& ...

  6. 如何用jquery动态改变 input 输入框的readonly属性及CSS样式

    样例 <style type="text/css">.disable{background-color: #d2d2d2;} </style><div ...

  7. 如何通过js改变css样式,如何通过JS 动态改变CSS样式

    如何通过JS 动态改变CSS样式0 豆豆dou...2013.09.15浏览640次分享举报 .TLIWREGION3CSS { position:absolute; left:32px; top:4 ...

  8. 修改图层样式(geoserver)

    背景 GeoServer支持自定义修改样式,但是默认情况下只能自己编写SLD代码,安装插件以后可以编写CSS代码来修改样式.不过这样子搞还是很麻烦,因此想找到更便捷的方法来修改图层样式. 生成SLD文 ...

  9. qgis修改geoserver图层样式

    一.制作样式文件(.sld) 1.qgis找到对应的shp数据并双击打开: 2.右键图层选择属性 3.编辑图斑的内部填充样式 4.编辑图斑的边框样式 5.全部编辑完后点击apply,即可看到自定义的样 ...

  10. QGIS + GEOSERVER 图层符号化(根据表数据自定义图层样式)

    QGIS + GEOSERVER 图层符号化 图层服务自定义符号化,根据数据进行图层样式的编辑. 1.QGIS 加载数据并配置样式 QGIS 添加PostgreSql 的表数据 输入密码 选择要符号化 ...

最新文章

  1. java 解释型和编译型
  2. arguments.length
  3. 谁的python入门教程好_怎样学习Python?Python入门必看
  4. VTK:可视化之HanoiIntermediate
  5. 文件服务器定时开关机,如何配置作服务器定时开关机.ppt
  6. 【Linux网络编程】原始套接字能干什么?
  7. 第六章 三大消息摘要算法总结
  8. Centos 7系统目录结构
  9. 物体检测学习笔记-3D相机成像原理简介
  10. python pytorch库_一个简单而强大的深度学习库—PyTorch
  11. oracle中文转换为unicode,Oracle数据库字符集转换成Unicode产品开发
  12. 以字符串为例,谈谈Python到底要学到什么程度
  13. java 克隆对象_Java中克隆(Clone)一个对象
  14. oracle 实用记录
  15. android studio在raw文件夹下使用MediaPlayer播放Mp3音乐
  16. 4K电视与4K显示器的选择
  17. 私人定制YX3系列高效节能电动机:这才是大腕儿!
  18. 名悦集团:新能源汽车保养做好这三步,用车无忧
  19. 智能社:Javascript之Vue.JS(全套)
  20. 干货 | 想学数据分析不知道该读什么书、从哪本读,翻遍专业知识类网站最全的整理!

热门文章

  1. ORACLE常用工具介绍
  2. 制作ROS小车系列(一)——小车底盘制作(麦科勒姆轮地盘)
  3. python为什么是蛇的天敌_青蛙和蛇一直是天敌,只知道蛇会吃青蛙,你知不知道青蛙也吃蛇...
  4. Centos7安装源地址
  5. 微信公众号首次关注自动回复图文信息
  6. ipone=遥控器?
  7. 新思课堂C语言答案,新思课堂APP最新版下载_新思课堂APP官方版1.6.8下载_QQ下载站...
  8. 数据聚合与分组操作(数据分析)
  9. Docker-Toolbox常见问题解决方案
  10. 浅析大数据给我们带来的便利和好处