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>municipality</sld:Name>
<sld:FeatureTypeStyle>
<sld:Name>group 0</sld:Name>
<sld:Rule>
<sld:Name>New rule</sld:Name>
<sld:PolygonSymbolizer>
<sld:Fill>
<sld:CssParameter name="fill">#E9E9E9</sld:CssParameter>
<sld:CssParameter name="fill-opacity">0.5</sld:CssParameter>
</sld:Fill>
<sld:Stroke>
<sld:CssParameter name="stroke">#0000FF</sld: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文件。

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

效果图如下:

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

导出SLD文件:

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

在GeoServer中应用SLD

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

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

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

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

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

开源WebGIS实施方案(五):基于SLD实现图层符号化及其应用的更多相关文章

  1. 开源WebGIS实施方案(六):空间数据(PostGIS)与GeoServer服务迁移

    研发环境的变更,或者研发完成进行项目现场实施.运维的时候,经常就会面临数据及服务的迁移,这其中就包含空间数据以及GeoServer服务的迁移工作. 这里需要提醒的是:如果采用的是类似的开源WebGIS ...

  2. 开源WebGIS实施方案(四):GeoServer发布PostGIS数据

    GeoServer可以支持多种格式的数据源,本文只介绍其中一种,即PostGIS数据源. 新建一个工作区.工作区这个名字也是一变再变,早前叫做目录,后来改为工作空间,如今已变为工作区了. 添加数据存储 ...

  3. 开源WebGIS实施方案(三):Shapefile数据导入到PostGIS

    PostGIS新版中提供了一个可视化的工具,用于Shapefile数据的导入和导出,极大的方便了使用者的操作. 创建空间数据库 以具有创建用户权限的账号登录pgAdminIII,连接到数据库 创建一个 ...

  4. 面向企业级的开源WebGIS解决方案--MapGuide(对比分析)

    在技术特点.功能.架构等方面,MapGuide与其他WebGIS产品有什么区别?本文主要从此角度来介绍MapGuide的特性,以供参考.    本人选择了比较熟悉的几款WebGIS产品:MapServ ...

  5. 你必须知道的容器日志 (2) 开源日志管理方案 ELK

    本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章.上一篇<你必须知道的容器日志(1)>中介绍了Docker自带的log ...

  6. 83 项开源视觉 SLAM 方案够你用了吗?

    作者:吴艳敏 来源:83 项开源视觉 SLAM 方案够你用了吗? 前言 1. 本文由知乎作者小吴同学同步发布于https://zhuanlan.zhihu.com/p/115599978/并持续更新. ...

  7. AMQ学习笔记 - 14. 实践方案:基于ZooKeeper + ActiveMQ + replicatedLevelDB的主从部署

    概述 基于ZooKeeper + ActiveMQ + replicatedLevelDB,在Windows平台的主从部署方案. 主从部署可以提供数据备份.容错[1]的功能,但是不能提供负载均衡的功能 ...

  8. 从零开始学习jQuery (八) 插播:jQuery实施方案

    一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些许秘籍. 本篇文章属于临时插播,  用于介绍我在本公司的j ...

  9. 开源的PaaS方案:在OpenStack上部署CloudFoundry (一)简介

    目录(?)[-] OpenStack简介 OpenStack是一个美国国家航空航天局和Rackspace合作研发的以Apache许可证授权并且是一个自由软件和开放源代码项目 OpenStack是一个云 ...

随机推荐

  1. Java 从原字符串中截取一个新的字符串 subString()

    Java 手册 substring public String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串.该子字符串从指定索引处的字符开始,直 ...

  2. JVM体系结构之三:方法区之2(jdk1.6,jdk1.7,jdk1.8下的方法区变迁)

    方法区 方法区存储虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据.HotSpot中也称为永久代(Permanent Generation),(存储的是除了Java应用程序创建的对象之 ...

  3. linux中强大的screen命令

    今天发现了一个“宝贝”,就是Linux的screen命令,对于远程登录来说,不仅提供了类似于nohup的功能,而且提供了我非常喜欢的“多个桌面”的功能. 平常开一个putty远程登录,经常需要在两个程 ...

  4. 根据插件Swipe,结合jQuery封装成的新的jQuery插件

    swipe支持电脑上的自动滑动,也支持手机端的滑动效果.但是每次调用只能支持一个效果或者说一个页面出现n个这样的效果,我们就得调用n次这个插件. 我使用swipe+jQuery使得swip变得方便使用 ...

  5. Lifecycle of an ASP.NET Web API Message

    ASP.NET Web API, as we know now, is a framework that helps build Services over HTTP. Web API was int ...

  6. logger示例

    胜哥版 打印日志是很多程序的重要需求,良好的日志输出可以帮我们更方便的检测程序运行状态.Python标准库提供了logging模块,让我们也可以方便的在Python中打印日志. 日志介绍 完整的使用方 ...

  7. 分布式锁实践(二)-ZooKeeper实现总结

    写在最前面 前几周写了篇 利用Redis实现分布式锁 ,今天简单总结下ZooKeeper实现分布式锁的过程.其实生产上我只用过Redis或者数据库的方式,之前还真没了解过ZooKeeper怎么实现分布 ...

  8. BDE 升级到FireDAC

    BDE  Query Replace Str in files   by cnpack tools TQueryTFDQuery dmdb->qrypub->Open(sql); fdme ...

  9. Discuz 任务、道具、任务和验证类插件制作

    一.广告类脚本位置:source/class/adv/adv_name.php语言包位置:source/language/adv/lang_name.php <?php class adv_na ...

  10. VB.Net条形码编程的方法

    一.条形码的读取用过键盘口式的扫条码工具的朋友就知道,它就如同在鍵盘上按下数字鍵一样,基本不需任何编程和处理.但如果你使用的是其它接口的话,可能你就要为该设备编写通讯代码了.以下有一段简单的25针串口 ...