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

时间:2024-03-19 20:33:55

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

导读: GeoServer 不像 ArcGIS 那样有完整的体系可以完成地图的数据整理、配图、发布整个过程,虽然它也提供了网页版的代码界面去设计通用的 SLD 格式对 WMS 图层进行渲染,但没有可视化界面的话,对于前期查看地图效果比较被动,所以必须借助第三方的桌面软件进行 SLD 格式的生成,以提升设计的效率。本文是通过 uDig 工具对 PostGIS 数据源数据进行制图显示,并输出为 SLD 文件进行修改处理,并提交到 GeoServer 中进行使用。 By 李远祥

开源GIS桌面软件选择

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

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

GeoServer 的 WMS 的渲染模式

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

在 Styles 选项中可以天添加和管理图层的样式,下图展开了一个样式,查看其结构。
利用 uDig 生成 GeoServer 可用的 SLD 渲染文件

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

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

保存设置之后可以在图层预览中使用 OpenLayers 的方式查看效果。如下图所示
利用 uDig 生成 GeoServer 可用的 SLD 渲染文件

使用 uDig 辅助设计 SLD 文件

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

利用 uDig 生成 GeoServer 可用的 SLD 渲染文件
利用 uDig 生成 GeoServer 可用的 SLD 渲染文件
勾选加载的数据之后,可以在uDig 的地图界面显示了。
在 uDig 左侧的图层列表中,点击那个类似调色板的按钮,直接进入到图层样式的设置,如下图所示
利用 uDig 生成 GeoServer 可用的 SLD 渲染文件
在 Style Editor 中选择图层对应的类型,然后设置 Style Properties 的边界、填充、标注等。保证图层效果没问题,就可以选择 XML 选项,导出 SLD 文件。如下图所示:
利用 uDig 生成 GeoServer 可用的 SLD 渲染文件
在 XML 选项中,会根据图层配置生成 SLD 的XML 结构,如下图所示
利用 uDig 生成 GeoServer 可用的 SLD 渲染文件
但是,这里会有一些默认的参数,例如 XML 的encoding 默认为 UTF-8,这回导致中文标注乱码,字体默认为 Arial ,这也可以直接在该界面上修改。如果不修改,默认的效果就出现乱码的中文的迹象。
利用 uDig 生成 GeoServer 可用的 SLD 渲染文件

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

修改后如下图所示
利用 uDig 生成 GeoServer 可用的 SLD 渲染文件

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

总结

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