利用 uDig 生成 GeoServer 可用的 SLD 渲染文件

uDig简介

uDig是一个 open source (EPL and BSD) 桌面应用程序框架,构建在Eclipse RCP和GeoTools(一个开源的Java GIS工具包)上的桌面GIS(地理信息系统) ;是一款开源桌面GIS软件,基于Java和Eclipse平台,可以进行shp格式地图文件的编辑和查看;是一个开源空间数据查看器/编辑器,对OpenGIS标准,关于互联网GIS、网络地图服务器和网络功能服务器有特别的加强。uDig提供一个一般的java平台来用开源组件建设空间应用。摘自百度百科

总结几个特点:

1、开源

2、构建在eclipse RCP(基于Eclipse平台(8M)运行的桌面应用)和GeoTools(一个开源的Java GIS工具包)上的桌面GIS;

3、可对shp格式地图文件的编辑和查看;

开源GIS桌面软件选择

开源 GIS 桌面比较完善的有 QGIS 和 uDig 。
QGIS 各项功能都比较强大,扩展性能比较好,支持的格式也比较丰富,通常来说属于开源 GIS 的首选。但一旦与 GeoServer 结合,由于 QGIS 不支持将配置的图层令存在 SLD 格式,因此,在配图方面,不建议使用 QGIS 。
uDig 的功能相对 QGIS 要弱上不少,但它最大的好处是能够支持常规的数据格式,如shapefile、postgis等,并且提供可视化配图界面,能够将配图效果导出为 SLD 格式,因此它在开源 GIS 的体系结构中,可以将其定位在地图配图。

因此,在配合 GeoServer 的服务的呈现方面,首先 uDig 。虽然 ArcMap 中也有对应的插件 ArcMap2SLD,但由于 ArcMap 收费使用,所以也不建议加入到开源体系中来。

安装及注意事项

下载链接 http://udig.refractions.net/download/

下载zip包,解压后直接使用,可选不同版本。

GeoServer 的 WMS 的渲染模式

GeoServer 中数据服务和渲染是分开的,有专门的 Style 选项用作存储渲染效果,其主要的技术手段是制作解析器来解析 SLD 文件。如下图,在管理界面中可以找到 Style 选项,并罗列出所有的已经上传的 SLD 样式。

在 Styles 选项中可以天添加和管理图层的样式,下图展开了一个样式,查看其结构。

从界面上可以看到其样式管理的机制。需要给样式赋予一个名称,选定一个工作区(也可以不选择,选定的话只是用作标记)选择使用的格式,基本上只有 SLD 和 ZIP 两种,实际上就是一种 SLD 是明确可用。如果已经保存有 SLD 文件,可以直接通过上传的方式来载入这个样式。如果是全新创建,则直接在 Style Editor 中进行新建。新建的过程实际上就是编写 SLD 的XML 。在最下方有验证和提交的按钮,用作检查和提交最终的图层样式。

接下来是 GeoServer 的图层中应用编写好的样式,如下图,在左侧【图层】选项中进入图层列表,在列表中选择一个发布好的图层,并展看设置,在【发布】标签中,在 WMS Settting 部分,选择 Default Styles ,使用之前定义的图层即可。如下图所示。

保存设置之后可以在图层预览中使用 OpenLayers 的方式查看效果

使用 uDig 辅助设计 SLD 文件

如果直接使用 GeoServer 自身的 Style Editor ,这样效率比较低下。直接使用uDig 可以很方便的完成可视化设计,确定所见即得的图层效果。
使用 uDig 先加载 PostGIS 的数据,如下图,在菜单中【Layer】–【Add】设置加入数据

根据向导连接 PostGIS

要选postgis的库

勾选加载的数据之后,可以在uDig 的地图界面显示了。
在 uDig 左侧的图层列表中,点击那个类似调色板的按钮,直接进入到图层样式的设置,
在 Style Editor 中选择图层对应的类型,然后设置 Style Properties 的边界、填充、标注等。保证图层效果没问题,就可以选择 XML 选项,导出 SLD 文件。
在 XML 选项中,会根据图层配置生成 SLD 的XML 结构,如下图所示

但是,这里会有一些默认的参数,例如 XML 的encoding 默认为 UTF-8,这回导致中文标注乱码,字体默认为 Arial ,这也可以直接在该界面上修改。如果不修改,默认的效果就出现乱码的中文的迹象。

由于涉及到中文字段的标注,所以笔者建议将encoding 改为 GBK2312 ,将 Arial 字体改为常见的“宋体”等。

修改后如下图所示

修改没问题之后,可以直接拷贝这段 XML ,或者通过界面中的 Export 按钮导出 SLD 文件,以供 GeoServer 使用。

注意事项:

1.uDig需要使用jdk1.8的版本安装,我一开始用的别的版本的就开不下来,功能也有问题。所以建议在电脑上多装一个jdk1.8

2.当从pg中读取大量数据时,有可能会显示不出来,可能时BUG,我当时有40多万条数据要拿过来,发现属性信息过来了,但是无法显示,无奈改用shp加载

3.设置式样时,出现了几个问题,一个是控制分级渲染,我设置最大最小比例尺没有用,设置虚线式样dash,无法导出,无奈只得在生成的sld里面自己补,如何写sld,参照文章 geoserver设置style

总结

uDig 通过其可视化界面为图层进行渲染设计,在渲染结果上可以快速的实现 SLD 格式的转化,这对于 GeoServer 来说,是非常好的辅助设计工具。

利用 uDig 生成 GeoServer 可用的 SLD 渲染文件的更多相关文章

  1. 利用FFmpeg生成视频缩略图 2.1.6

    利用FFmpeg生成视频缩略图 1.下载FFmpeg文件包,解压包里的\bin\下的文件解压到 D:\ffmpeg\ 目录下. 下载地址 http://ffmpeg.zeranoe.com/build ...

  2. 基于Geoserver配置多图层地图以及利用uDig来进行样式配置

    在GeoServer中配置多个图层的地图相对来说很容易,其步骤为: 1. 进入geoserver 2. 配置相关的FeatureTypes 3. 配置WMS内容,进入以后,主要有以下几个地方需要命名: ...

  3. Java进阶(五十二)利用LOG4J生成服务日志

    Java进阶(五十二)利用LOG4J生成服务日志 前言 由于论文写作需求,需要进行流程挖掘.前提是需要有真实的事件日志数据.真实的事件日志数据可以用来发现.监控和提升业务流程. 为了获得真实的事件日志 ...

  4. 9.利用msfvenom生成木马

    这篇文章来介绍一下msf中一个生成木马的msfvenom模块. msfvenom命令行选项如下: 英文原版: 中文版: Options: -p, --payload <payload> 指 ...

  5. 利用GPU实现大规模动画角色的渲染(转)

    原文: https://www.cnblogs.com/murongxiaopifu/p/7250772.html 利用GPU实现大规模动画角色的渲染 0x00 前言 我想很多开发游戏的小伙伴都希望自 ...

  6. 利用Swashbuckle生成Web API Help Pages

    利用Swashbuckle生成Web API Help Pages 这系列文章是参考了.NET Core文档和源码,可能有人要问,直接看官方的英文文档不就可以了吗,为什么还要写这些文章呢? 原因如下: ...

  7. Spring事务管理----声明式:利用TransactionProxyFactoryBean生成事务代理

    通常建议采用声明式事务管理.声明式事务管理的优势非常明显:代码中无需关于关注事务逻辑,让spring声明式事务管理负责事务逻辑,声明式事务管理无需与具体的事务逻辑耦合,可以方便地在不同事务逻辑之间切换 ...

  8. 利用JAVA生成二维码

    本文章整理于慕课网的学习视频<JAVA生成二维码>,如果想看视频内容请移步慕课网. 维基百科上对于二维码的解释. 二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图 ...

  9. 学习笔记:利用GDI+生成简单的验证码图片

    学习笔记:利用GDI+生成简单的验证码图片 /// <summary> /// 单击图片时切换图片 /// </summary> /// <param name=&quo ...

随机推荐

  1. 为什么查询出来的数据保存到Arraylist?插入删除数据为啥用LinkedList?

    引言:这是我在回答集合体系时,被问到的一个问题,也是因为没有深入学习所以回答的并不是很好,所以这两天看了一下,以下是我的一些回答与学习方法. 学习方法:我们学习,系统性的学习肯定是比零散的学习更有效的 ...

  2. React Context上下文

    目录 前言 一 context旧版使用步骤 1.1 根组件childContextTypes属性 1.2 根组件getChildContext方法 1.3 子组件contextTypes静态属性 1. ...

  3. Day 06 流程控制和爬虫基础2

    目录 if 判断 单分支结构 双分支结构 多分支结构 for循环 for循环的基本用法 for循环嵌套 break continue 爬虫基础2 爬取豆瓣TOP250 爬取豆瓣数据接口(异步数据) 爬 ...

  4. 【React】393 深入了解React 渲染原理及性能优化

    如今的前端,框架横行,出去面试问到框架是常有的事. 我比较常用React, 这里就写了一篇 React 基础原理的内容, 面试基本上也就问这些, 分享给大家. React 是什么 React是一个专注 ...

  5. 小白学 Python 爬虫(20):Xpath 进阶

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  6. Vue 02

    目录 表单指令v-model 条件指令v-if 循环指令v-for 分隔符delimiters 过滤器filters 计算属性computed 监听属性watch 前端数据库 表单指令v-model ...

  7. 【原创】这道Java基础题真的有坑!我也没想到还有续集。

    前情回顾 自从我上次发了<这道Java基础题真的有坑!我求求你,认真思考后再回答.>这篇文章后.我通过这样的一个行文结构: 解析了小马哥出的这道题,让大家明白了这题的坑在哪里,这题背后隐藏 ...

  8. 《Java基础知识》Java注解"@"详解

    Java注解含义: Java注解,顾名思义,注解,就是对某一事物进行添加注释说明,会存放一些信息,这些信息可能对以后某个时段来说是很有用处的.Java注解又叫java标注,java提供了一套机制,使得 ...

  9. MongoDB(七):聚合aggregate

    1. 聚合aggregate 聚合主要用于计算数据,类似sql中的sum().avg() 语法: db.集合名称.aggregate([{管道:{表达式}}]) stu准备的数据: db.stu.in ...

  10. 入职小白随笔之Android四大组件——活动详解(activity)

    推荐Android入门书籍:第一行代码(郭霖) google官方文档地址:https://developer.android.google.cn/guide/components/activities ...