开源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>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实现图层符号化及其应用的更多相关文章
- 开源WebGIS实施方案(六):空间数据(PostGIS)与GeoServer服务迁移
研发环境的变更,或者研发完成进行项目现场实施.运维的时候,经常就会面临数据及服务的迁移,这其中就包含空间数据以及GeoServer服务的迁移工作. 这里需要提醒的是:如果采用的是类似的开源WebGIS ...
- 开源WebGIS实施方案(四):GeoServer发布PostGIS数据
GeoServer可以支持多种格式的数据源,本文只介绍其中一种,即PostGIS数据源. 新建一个工作区.工作区这个名字也是一变再变,早前叫做目录,后来改为工作空间,如今已变为工作区了. 添加数据存储 ...
- 开源WebGIS实施方案(三):Shapefile数据导入到PostGIS
PostGIS新版中提供了一个可视化的工具,用于Shapefile数据的导入和导出,极大的方便了使用者的操作. 创建空间数据库 以具有创建用户权限的账号登录pgAdminIII,连接到数据库 创建一个 ...
- 面向企业级的开源WebGIS解决方案--MapGuide(对比分析)
在技术特点.功能.架构等方面,MapGuide与其他WebGIS产品有什么区别?本文主要从此角度来介绍MapGuide的特性,以供参考. 本人选择了比较熟悉的几款WebGIS产品:MapServ ...
- 你必须知道的容器日志 (2) 开源日志管理方案 ELK
本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章.上一篇<你必须知道的容器日志(1)>中介绍了Docker自带的log ...
- 83 项开源视觉 SLAM 方案够你用了吗?
作者:吴艳敏 来源:83 项开源视觉 SLAM 方案够你用了吗? 前言 1. 本文由知乎作者小吴同学同步发布于https://zhuanlan.zhihu.com/p/115599978/并持续更新. ...
- AMQ学习笔记 - 14. 实践方案:基于ZooKeeper + ActiveMQ + replicatedLevelDB的主从部署
概述 基于ZooKeeper + ActiveMQ + replicatedLevelDB,在Windows平台的主从部署方案. 主从部署可以提供数据备份.容错[1]的功能,但是不能提供负载均衡的功能 ...
- 从零开始学习jQuery (八) 插播:jQuery实施方案
一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍. 本篇文章属于临时插播, 用于介绍我在本公司的j ...
- 开源的PaaS方案:在OpenStack上部署CloudFoundry (一)简介
目录(?)[-] OpenStack简介 OpenStack是一个美国国家航空航天局和Rackspace合作研发的以Apache许可证授权并且是一个自由软件和开放源代码项目 OpenStack是一个云 ...
随机推荐
- Web Api HelpPage
为了方面APP开发人员,服务端的接口都应当提供详尽的API说明.但每次有修改,既要维护代码,又要维护文档,一旦开发进度紧张,很容易导致代码与文档不一致. Web API有一个Help Page插件,可 ...
- ExtJS动态创建组件
J是代码动态创建dom: 或者 eval有后台组织代码,前台执 ======================= ExtJS组件的动态的创建: 程序中大多数时候需要在后台根据业务逻辑创建符合要求的组件, ...
- PG覆盖率检查
覆盖率检查 需要gcov和lcov工具,gcov在gcc中自带,lcov需要自行下载安装 重新编译 ./configure --prefix=`pwd`/install --with-perl --w ...
- php接收base64编码的文件内容并保存
<?php header('Content-type:text/html;charset=utf-8'); //读取图片文件,转换成base64编码格式 $image_file = './fac ...
- linux版飞信安装
下载安装包; http://www.it-adv.net/fetion/libraryrh4x32.tar.gz [支持库] http://www.it-adv.net/fetion/downloa ...
- 关于RDS for mysql中导入数据库set global event_scheduler =1 需要更多超级权限
关于RDS中导入数据库set global event_scheduler =1 需要更多超级权限 报错提示 其实这个意思是 让mysql自动启动 计划任务 如果在 命令行下 查询 SHOW VAR ...
- 方便好使的java.util.Properties类
今天偶然碰到这个类,发现jdk中这些平时不大用到的类还挺好玩儿的,用起来也特别实在方便,随便写点记录下. java.util.Properties是对properties这类配置文件的映射.支持key ...
- Spring Boot实践——Spring Boot 2.0 新特性和发展方向
出自:https://mp.weixin.qq.com/s/EWmuzsgHueHcSB0WH-3AQw 以Java 8 为基准 Spring Boot 2.0 要求Java 版本必须8以上, Jav ...
- JDK动态代理代码示例
JDK动态代理代码示例 业务接口 实现了业务接口的业务类 实现了InvocationHandler接口的handler代理类 1.业务接口 package com.wzq.demo01; /** * ...
- C#中使用DLL相关问题
一,C#调用 C/C++ 库函数 1,UNITY的C# VS工程常常打不开 属性页,右键工程无 [添加引用]项.原因是VS的自带工具[适用于UNITY的工具]导致的. 解决办法:VS-[工具]-[选项 ...