矢量数据的符号化在Gis数据展示中占了很大的用户体验作用,当项目存在CS/BS系统同时存在时,为了减少符号化文件创建的工作量,需要使两种平台支持的符号化文件相同。在CS的Gis平台中大部分支持Windows字体文件、图片文件,这两种GeoServer同样支持。但是图片文件无法在放大缩小的时候很好的表达矢量数据。本文基于Windows字体文件(.ttf)进行设置说明。
GeoServer的Style文件可根据QGIS进行配置后,保存样式即可获取到(.sld).如图:
QGis配置SLD样式文件
当通过此文件上传到GeoServer中作为样式文件配置点图层后会发现,电脑里面装了对应字体但是预览图层时会出现符号未显示的情况(全是实心方框)。这是因为GeoServer基于java开发,其支持的字体文件受限于JVM,可在GeoServer的服务器状态中查看其支持的字体类型或通对应的REST服务可查看:
GeoServer默认支持的字体数量
GeoServer Rest查看字体
除此之外无法通过GeoServer的Rest接口进行添加字体:
查看接口可用方法
现在说说解决办法,在安装GeoServer的时候需要选择安装的Java地址,在对应的文件夹下放入ttf字体文件后,重启GeoServer服务即可。
Java 安装路径
拷贝至JRE/lib/fonts下
重启GeoServer服务后字体数目增加1
centos查看java路径(命令中的路径根据实际情况更改):
输入命令:which java,查看java路径(/usr/bin/java);
输入命令:ls -lrt /usr/bin/java,查看(/usr/bin/java->/etc/alternatives/java)
输入命令:ls -lrt /etc/alternatives/java
结果(/etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-7.ky10.x86_64/jre/bin/java),查看最终fonts路径(/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-7.ky10.x86_64/jre/lib/fonts)
最后,将字体问题拷贝到路径下(如果没有fonts文件夹,则手工建立fonts文件夹),如下图所示(esri字体从系统字体目录下搜索esri,拷贝出来即可):
在支持列表中找到自定义的字体
查看自定义符号的展示效果如下: