【Java+GS】GeoServer,通过配置自定义样式,实现不同图斑展示不同颜色。附java实现方法

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

写在前面,在配置geoserver图层时,需要了如下需求:

  1. 每个不同的图层要求配置不同的样式
  2. 一个图层内,根据不同条件的也要展示不同的颜色

所以为了方便知识整理,将把简单的样式发布和一些实际的样式配置结合做一个整理。

思路整理如下:

  1. 掌握sld文件发布样式(客户端)
  2. 掌握使用java api 发布样式
  3. 设计从数据库字段自定义样式

客户端发布样式

一、GeoServer中使用SLD样式

SLD是风格化图层描述器(Styled Layer Descriptor)的简称,是2005年OGC提出的一个标准,这个标准在一定条件下允许WMS服务器对地图可视化的表现形式进行扩展。在没有SLD之前,只能使用一些已经在服务器上规定好的样式来对地图进行可视化。而当使用了实现了SLD标准之后,它允许我们从客户端来对地图进行定义自己的样式,分级显示等操作,极大的扩展了地图可视化的灵活性。

  • 简单来说,sld就是用于描述图层样式的一个xml格式的文本
  • SLD文档的元素架构如下:

img

关于详细的解释可以看博客[GeoServer中使用SLD样式]

  • 根据需求,这里着重提到的是《3.4 分属性渲染》

二、分属性渲染

各标签含义

标签名 含义
……Rule 声明一个规则
………Filter 过滤器
………PolygonSymbolizer 样式
………TextSymbolizer 注记

格式如下

image-20230506093452902

三、客户端操作发布图层

  1. 新建样式

    image-20230506093848417

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

    image-20230506094009742

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

    image-20230506094439656

掌握使用java api 发布样式

一、前置准备

以我本地的环境为例

  1. 导入依赖 geoserver-manager
<!--图层发布-->
<dependency>
    <groupId>nl.pdok</groupId>
    <artifactId>geoserver-manager</artifactId>
    <version>1.7.0-pdok2</version>
</dependency>
  1. 获取manager对象 —— 比较简单,配置一些必要的参数即可

二、发布图层

发布图层有以下几个常用的方法:

image-20230506095110818

分别是使用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" (
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xcong_Zhu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值