开源WebGIS实施方案(五):基于SLD实现图层符号化及其应用

SLD概述

SLD(OpenGIS® Styled Layer Descriptor):图层样式注记。其当前版本是1.1.0。SLD是一种描述地图图层样式的标准,一般用于WMS中的图层符号化。

说白了,SLD就是以xml文件的结构形式,定义了一组图层渲染的规则。一个简单的面状SLD示例如下:

xml version="1.0" encoding="UTF-8"?><sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" version="1.0.0">
    <sld:UserLayer>
        <sld:LayerFeatureConstraints>
            <sld:FeatureTypeConstraint/>
        sld:LayerFeatureConstraints>
        <sld:UserStyle>
            <sld:Name>municipalitysld:Name>
            <sld:FeatureTypeStyle>
                <sld:Name>group 0sld:Name>
                <sld:Rule>
                    <sld:Name>New rulesld:Name>
                    <sld:PolygonSymbolizer>
                        <sld:Fill>
                            <sld:CssParameter name="fill">#E9E9E9sld:CssParameter>
                            <sld:CssParameter name="fill-opacity">0.5sld:CssParameter>
                        sld:Fill>
                        <sld:Stroke>
                            <sld:CssParameter name="stroke">#0000FFsld:CssParameter>
                        sld:Stroke>
                    sld:PolygonSymbolizer>
                sld:Rule>
            sld:FeatureTypeStyle>
        sld:UserStyle>
    sld:UserLayer>
sld:StyledLayerDescriptor>

如何创建SLD 文件

既然SLD本质上就是一个xml文件,所以我们当然有多种方式来创建SLD了。一般来说,主要有以下几类方式

1、纯手写。

2、利用开源软件对图层进行符号化渲染,再导出对应的SLD文件。

3、先使用ArcGIS配图,再通过某种“黑科技”手段将图层样式导出为SLD。

对于第一种方式,难度不是一般的高,不推荐使用。当然, 如果是一头很大很大的牛,可以考虑这么做。

第二种方式是目前用的最多的一种方式,比较可行的软件有uDig、QGIS等,在桌面软件中进行符号化配置,然后就可以直接导出SLD文件。但这类开源软件使用起来多少都有一些bug,需要小心避坑。

第三种方式,其实也可以算是第二种方式中的一个特例。作为全球领先的GIS软件,ArcGIS在制图表达上有着无可比拟的优势,但作为一个商业公司,与开源免费的精神有着不可调和的价值冲突,所以ArcGIS中并不提供导出图层符号化SLD文件功能。所以这个时候Coder就可以发挥专长来创造某种“黑科技”了——将ArcGIS图层渲染样式导出为SLD文件。

uDig配图并创建SLD

这里选用uDig来创建SLD文件。

对城市点图层进行符号化,在样式编辑器中指定分类渲染,并且分别设置每一个类别的渲染符号、标注内容、标注样式等

开源WebGIS实施方案(五):基于SLD实现图层符号化及其应用_第1张图片

开源WebGIS实施方案(五):基于SLD实现图层符号化及其应用_第2张图片

效果图如下:

开源WebGIS实施方案(五):基于SLD实现图层符号化及其应用_第3张图片

提醒一下,配图是一门技术活,也是一门艺术活,水略深。

导出SLD文件:

开源WebGIS实施方案(五):基于SLD实现图层符号化及其应用_第4张图片 

按照类似的方式,可以分别制作每一个图层的SLD文件。

在GeoServer中应用SLD

在桌面GIS软件中完成制图,相应的完成了SLD的创建工作。如果想要在WMS中展现出与桌面GIS中相同的渲染效果,就需要在GeoServer中应用SLD了。

在GeoServer管理后台中添加新样式,确保SLD内容符合规则,设置好其它参数后提交。

开源WebGIS实施方案(五):基于SLD实现图层符号化及其应用_第5张图片

开源WebGIS实施方案(五):基于SLD实现图层符号化及其应用_第6张图片

对GeoServer中,针对相应图层应用该Style。对于未发布的图层,可以在发布设置时候直接选用该Style,图层发布请参考开源WebGIS实施方案(四):GeoServer发布PostGIS数据。对于已发布的图层,可以进行编辑,选用该Style

开源WebGIS实施方案(五):基于SLD实现图层符号化及其应用_第7张图片

依照类似的方式,对其它图层应用Style。完成后,使用GeoServer的WMS服务获取地图渲染效果图

开源WebGIS实施方案(五):基于SLD实现图层符号化及其应用_第8张图片

总结:本文简单介绍了SLD是什么、能够起什么作用,介绍了创建SLD的三种方式,并使用其中一种方式进行实践应用。

 

转载于:https://www.cnblogs.com/hans_gis/p/6952954.html

你可能感兴趣的:(开源WebGIS实施方案(五):基于SLD实现图层符号化及其应用)