开源GIS之WMS三:WMS的样式与符号

目录

 

一、样式化图层描述符

二、使用GetStyles操作请求样式

三、使用GetLegendGraphic操作请求图例


一、样式化图层描述符

    WMS允许调整地图中图层使用的符号。这是通过样式化图层描述符来实现的。

    一个样式化图层描述符描述了符号的大小、颜色和标记。样式化图层描述符比较复杂,以至于必须有它们自己的OGC规范文档(www.opengeospatial.org/standards/sld)定义应该如何操作它们。

    样式化图层描述符可由服务发布者或客户端来设计。要设计一个真正有用的样式化图层描述符,必须了解WMS服务中的图层,而这可以通过可选的DescribeLayer操作来实现。

    一旦创建了样式化图层描述符,有几种途径来使用:

  • 最常用的是将其放置到Web服务器中,然后在GetMap请求中将STYLE参数指向该文件的URL。
  • 另一种方式是在GetMap请求的可选SLD_BODY参数中直接设置对应的XML文本。当然,这一种方式将导致URL非常的长,而且需要大量的特殊字符编码或转义。

    样式化图层描述符中使用的XML往往包含许多嵌套层次而且比较复杂,因此,从头编写样式化图层描述符是基本不可能的,也没有必要。可使用一个样式化图层描述符文件,在其基础上进行调整,以满足需求。另外也可以使用QGIS,在窗口环境中样式化图层,然后将其导出为样式化图层描述符文件。这是非常有用的,但当前有一个很大的限制,那就是QGIS还不支持将标签信息输出到样式化图层描述符文件。

    GeoServer中将数据与样式信息完全分开存储。在“图层”页面中定义需要发布的数据库,在“Styles”页面中定义可访问的样式化图层描述符。需要在“编辑图层”页面的“发布”面板中设置图层与样式的链接。

二、使用GetStyles操作请求样式

    GetStyles是WMS的一个可选操作。例如对于如下GetStyles请求:

http://sampleserver1.arcgisonline.com/ArcGIS/services/Specialty/ESRI_StateCityHighway_USA/MapServer/WMSServer?version=1.3.0&request=GetStyles&layers=0,1,2 

    其响应将返回每个图层对应的样式,如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<sld:StyledLayerDescriptor version="1.0.0"
    xmlns="http://www.opengis.net/ogc"
    xmlns:sld="http://www.opengis.net/sld"
    xmlns:ogc="http://www.opengis.net/ogc"
    xmlns:gml="http://www.opengis.net/gml"
    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">

<!-- layer "0" -->
<sld:NamedLayer>
<sld:Name>0</sld:Name>
<!-- NamedStyle -->
<sld:NamedStyle>
  <sld:Name>default</sld:Name>
</sld:NamedStyle>
<!-- UserStyle -->
</sld:NamedLayer>

<!-- layer "1" -->
<sld:NamedLayer>
<sld:Name>1</sld:Name>
<!-- NamedStyle -->
<sld:NamedStyle>
  <sld:Name>default</sld:Name>
</sld:NamedStyle>
<!-- UserStyle -->
</sld:NamedLayer>

<!-- layer "2" -->
<sld:NamedLayer>
<sld:Name>2</sld:Name>
<!-- NamedStyle -->
<sld:NamedStyle>
  <sld:Name>default</sld:Name>
</sld:NamedStyle>
<!-- UserStyle -->
</sld:NamedLayer>

</sld:StyledLayerDescriptor>

三、使用GetLegendGraphic操作请求图例

    GetLegendGraphic也是WMS的一个可选操作,用于获取图例。

    例如,请求本地计算机GeoServer自带数据的sf:sfdem的图例:

http://localhost:8084/geoserver/sf/wms?service=WMS&version=1.3.0&request=GetLegendGraphic&layer=sf:sfdem&format=image/png 

    返回结果如下所示:

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值