文章目录
写在前面,在配置geoserver图层时,需要了如下需求:
- 每个不同的图层要求配置不同的样式
- 一个图层内,根据不同条件的也要展示不同的颜色
所以为了方便知识整理,将把简单的样式发布和一些实际的样式配置结合做一个整理。
思路整理如下:
- 掌握sld文件发布样式(客户端)
- 掌握使用java api 发布样式
- 设计从数据库字段自定义样式
客户端发布样式
一、GeoServer中使用SLD样式
SLD是风格化图层描述器(Styled Layer Descriptor)的简称,是2005年OGC提出的一个标准,这个标准在一定条件下允许WMS服务器对地图可视化的表现形式进行扩展。在没有SLD之前,只能使用一些已经在服务器上规定好的样式来对地图进行可视化。而当使用了实现了SLD标准之后,它允许我们从客户端来对地图进行定义自己的样式,分级显示等操作,极大的扩展了地图可视化的灵活性。
- 简单来说,sld就是用于描述图层样式的一个xml格式的文本
- SLD文档的元素架构如下:

关于详细的解释可以看博客[GeoServer中使用SLD样式]
- 根据需求,这里着重提到的是《3.4 分属性渲染》
二、分属性渲染
各标签含义
| 标签名 | 含义 |
|---|---|
| ……Rule | 声明一个规则 |
| ………Filter | 过滤器 |
| ………PolygonSymbolizer | 样式 |
| ………TextSymbolizer | 注记 |
格式如下

三、客户端操作发布图层
-
新建样式

-
输入样式名称,输入sld文本,点击验证

-
图层展示测试,进入图层编辑界面,进入layer preview标签下即可预览。效果如下

掌握使用java api 发布样式
一、前置准备
以我本地的环境为例
- 导入依赖 geoserver-manager
<!--图层发布-->
<dependency>
<groupId>nl.pdok</groupId>
<artifactId>geoserver-manager</artifactId>
<version>1.7.0-pdok2</version>
</dependency>
- 获取manager对象 —— 比较简单,配置一些必要的参数即可
二、发布图层
发布图层有以下几个常用的方法:

分别是使用file文件发布,和使用string文件发布
三、发布工具类
/**
* 创建样式
* //// 逻辑修改
* @param manager geoserver图层管理类
* @param styleName 样式名称
* @param geoStylePath 从配置文件获取的
* @return
*/
public static boolean createStyle(GeoServerRESTManager manager, String styleName, String geoStylePath) throws IOException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {
boolean existsStyle = manager.getReader().existsStyle(styleName);
if (!existsStyle) {
String style = FileUtils.readFileToString(new File(geoStylePath));
//创建样式
existsStyle = manager.getPublisher().publishStyle(style,styleName);
}
return existsStyle;
- 从指定路径读取sld文件文本,在进行发布
- 为什么使用后string字符串进行发布 —— 为了便于后期进行数据库配置后进行发布
设计从数据库字段自定义样式
一、数据库设计
目标:根据数据库动态生成发布所需的sld文件。
其实就是需要6个核心参数:条件x2, stroke x2 , fill x2
- property_name 字段名
- literal 条件
- fill_color 填充颜色
- fill_opacity 不透明度
- stroke_color 线条颜色
- stroke_width 线宽
给出初版表结构如下
CREATE TABLE "public"."geoserver_publish_style" (

文章介绍了如何在GeoServer中使用SLD标准进行图层样式配置,包括客户端发布样式,分属性渲染以及使用JavaAPI进行图层发布。同时,探讨了如何设计数据库字段来自定义样式,提供了一种根据数据库动态生成sld文件的方案。

3326

被折叠的 条评论
为什么被折叠?



