文章目录
前言
我们无法从大多数版本的Geoserver发布的地图服务以及要素服务中获取中文属性,此外数据库字段名一般用英文或者拼音首字母表示,这导致我们在实现属性表或者属性查询的时候需要维护字典表并为其编写代码。无论这个过程你怎样优化,也不如像ArcGIS系列那样把alias属性内置更加简便优雅便于维护。终于,Geoserver在近期的版本中实现了自定义属性(customize attributes)这一功能,我们来试一试效果如何!
一、阅读官方文档
Geoserver官网对此特性做出了如下介绍:
简单来说:
- 支持改变字段顺序
- 支持移除字段
- 基于表达式创建新的字段
- 重命名属性
- 添加描述
- 改变字段的必须性
- 自定义类型(此项没怎么看懂,先不细看了,有会用的朋友可以帮忙讲讲)
- 重置
我们今天主要尝试“重命名属性”这一项(基本满足大多数应用场景),主要用法大概是自定义name那一列,下面会提到。
二、软件下载与版本选择
1. Geoserver版本
我们需要知道哪些版本可以支持本特性,当然你可以直接下载最新版本的Geoserver,但我觉得这还不够,有很多场景需要你了解它是从哪个版本开始支持的。我没有找到特别简单的办法获取答案,不过答案还是找到了,通过一种比较笨的办法,在这里不仔细介绍了,反正,答案是:Geoserver2.21全系以及之后的所有版本均支持。
2. Java版本
Geoserver和java版本是存在对应关系的,错误的Java版本会导致启动或其他过程中出现失败。对应关系在 https://geoserver.org/download/ 可以找到(需要进入archive标签页)。
可以观察到官方给出的2.23版本对应的Java版本是11和17,但是当我尝试使用17版本的Java启动Geoserver时,程序出现了问题,报错信息指出问题可能和图像渲染有关。而换成11版本则一切正常,建议使用11版本,如果有朋友用17版本也能成功地话请在评论区留言。
三、图层配置
我们用Geoserver官方自带的国界线(countries)图层进行操作。
进入图层配置页面,勾选Customize attributes选项,配置页面随之出现。
我们尝试把NAME_ZH这一字段配置别名,即在NAME一列填写别名,然后保存。
四、验证
进入预览页面,点击要素进行测试。
结果显示,WMS查询结果的字段名已经变成我们自定义的别名。尝试将别名长度增加到20个中文字符,结果依然没有受到影响。
继续尝试了WFS服务中的GeoJSON也没有出现问题,但是导出Shp文件的时候还是有问题存在。
总结
可见,自定义属性功能(Customize attributes)处于一个基本可用的状态,在实现属性表或者属性查询等功能时,可以代替传统的额外录入字典的方式,基本可堪大任。