开源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 

    返回结果如下所示:

猜你喜欢

转载自blog.csdn.net/qq_35732147/article/details/81903314
今日推荐