通过SLD自定义WMS服务风格

本文深入探讨了WMS服务的工作原理及其与SLD样式表的交互方式,介绍了如何使用预定义和自定义SLD来渲染地图,以及SLD的高级特性,如过滤器的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

布鲁斯李

WMS服务又称网络地图服务,它是利用具有地理空间位置信息的数据制作地图,将地图定义为地理数据的可视化表现。可以根据用户的请求,返回相应的地图,包括PNG、JPEG、TIFF等栅格形式,又或者SVG、WEB CGM等矢量形式。到目前位置,已发布了四个版本的WMS规范:1.0.0、1.1.0、1.1.1、1.3.0 。超图支持1.1.1和1.3.0规范。
SLD(Styled-Layer Descriptor,图层样式表)中定义了可以符号化 WMS 服务的各种样式方案,包括 WMS 服务预定义的样式方案和客户端自定义的样式方案。今天为大家介绍一下如何使用SLD,以leaflet为例:

一、使用预定义的STYLES

新建一个WMS服务接口,在该接口中预先添加上我们已设置好的sld文件。
在这里插入图片描述
Sld文件内容如下:
在这里插入图片描述
需要发布的数据的属性表内容如下:
在这里插入图片描述
使用Leaflet对接该WMS服务:
在这里插入图片描述
在这里插入图片描述
使用预定义的sld,在参数中添加上我们预先在sld中设置的style风格:
在这里插入图片描述
使用预定义的STYLES的缺点是,在修改了sld文件内容之后,需要在新建的WMS接口中重新添加该sld文件。
WMS支持HTTP协议,预定义的STYLES通过STYLES=style_list参数对请求,请求方式如下:
在这里插入图片描述
上述示例使用sld样式后的GetMap请求为:
http://localhost:8090/iserver/services/map-china/superM/china?VERSION=1.1.1&REQUEST=GetMap&layers=0.0&STYLES=Color5&SRS=EPSG:4326&BBOX=-180.0,-90.0,180.0,90.0&WIDTH=800&HEIGHT=400&FORMAT=image/png
结果如下:
在这里插入图片描述

二、使用自定义的STYLES(推荐使用)

客户端可以对 WMS 服务应用自定义的 SLD,从而对图层进行渲染。使用自定义的 SLD 来渲染图层,有如下两种方式:
1、通过引入 SLD 文档的 URI 来渲染所请求的地图, 即在 GetMap 请求中添加 SLD=sld_xml_uri 参数对。其中 sld_xml_uri 必须能够被 WMS 服务器所访问。请求方式如下:
在这里插入图片描述
简单点说,相当于是在url中添加sld=文件位置,这里的文件位置需要使用URI解码的格式。
使用上述SLD的GetMap请求与效果如下:
http://localhost:8090/iserver/services/map-china/superM/china?VERSION=1.1.1&REQUEST=GetMap&layers=0.0&STYLES=Color5&SRS=EPSG:4326&BBOX=-180.0,-90.0,180.0,90.0&WIDTH=800&HEIGHT=400&FORMAT=image/png&SLD=file:///C:/Users/86152/Desktop/sld/wmsColor.sld
在这里插入图片描述
2、通过引入 SLD 文档的实际内容来渲染所请求的地图,即在 GetMap 请求中添加 SLD_BODY=sld_xml_body 参数对,其中 sld_body_xml 必须是经过 URI 编码的。请求方式如下:
在这里插入图片描述
这里是一个完整的sld内容:
在这里插入图片描述
使用上述的SLD_BODY的GetMap请求如下,注意需要先对sld内容进行URI转码,转码后结果较长不予展示,效果如下:
在这里插入图片描述
STYLES 与 SLD/SLD_BODY 的匹配规则
在 GetMap 请求中,用户可以指定 STYLES 参数,也可以指定 SLD(SLD_BODY) 参数,二参数的匹配规则如下:
在这里插入图片描述
除了上述对sld文件调用方法外,sld本身也支持丰富的规则设定,通过添加FIlter过滤器,允许用户设置自定义的SQL语句。从而实现各式各样的样式方案。以下我们来设置一个过滤器:
在这里插入图片描述
在这里插入图片描述
效果如下:
在这里插入图片描述)
更多的有关sld的设置,可以到OGC官网中查看一下,地址如下:https://www.opengeospatial.org/standards/sld 。希望可以帮助到大家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值