分布式数据矢量瓦片之最佳制图实践 |
SuperMap GIS 10.1 版本支持将HBase(11.2起移除该功能)和DSF矢量数据(以下简称分布式矢量数据或者分布式数据)地图,通过工作空间发布为矢量瓦片服务,实现了“免切片” 发布矢量瓦片服务。矢量瓦片的优势之一是实现了数据与风格的分离,分布式矢量数据的矢量瓦片也是遵循MapBox MVT规范的矢量瓦片,瓦片的风格样式采用MapBox标准样式描述,因此,一些分布式矢量数据图层的风格在矢量瓦片中将不被支持;另外,由于分布式矢量数据图层本身就是使用新的渲染显示方式,原有图层类型(传统矢量数据图层)的个别风格设置对分布式矢量数据图层也是无效的,因此,基于上述情况,对分布式数据矢量瓦片所能支持的图层风格及相关设置内容进行如下汇总,便于在分布式数据制图环节把握好最终的矢量瓦片服务显示的正确性和有效性:
分布式数据矢量瓦片服务的显示支持MapBox GL和OpenLayers两种渲染显示效果。其中,OpenLayers支持多种投影的矢量瓦片渲染显示,而MapBox GL只支持渲染显示EPSG3857投影的矢量瓦片。
实际制图中,如果数据的坐标系与地图显示坐标系不同,可以开启动态投影实现正确显示,建议发布矢量瓦片服务的分布式数据地图尽量不使用动态投影,保证数据与地图投影一致,否则会降低矢量瓦片的生成性能。
在使用SuperMap iDesktopX进行分布式数据制图中,其图层的符号化与原有图层类型(传统矢量数据图层)共用一套符号设置界面和符号化系统,但是,由于分布式数据图层采用了新的渲染显示方式,所以存在个别原有图层类型支持的符号,分布式数据图层不支持,加上矢量瓦片服务显示时,瓦片的风格采用MapBox标准样式描述,因此,所发布的矢量瓦片服务与分布式数据地图的风格支持情况也不近相同,具体总结如下:
符号类型 |
原有图层类型支持的符号 |
分布式数据图层 是否支持 |
矢量瓦片服务 是否支持 |
|
点 符号 |
系统符号 |
System0 |
√ |
不支持 (将使用圆点符号替代显示) |
System1 |
√ |
√ |
||
png 半透明风格 |
√ |
√ |
||
truetype |
√ |
√ |
||
icon |
√ |
√ |
||
svg |
√ |
√ |
||
u 矢量瓦片的显示不支持符号随图缩放。 |
||||
填充 符号 |
png栅格符号(半透明) |
√ |
√ |
|
矢量符号填充 |
√ |
√ |
||
true type符号填充 |
√ |
未测试 |
||
系统填充符号 |
|
√ |
√ |
|
|
√ |
不支持 (将使用System0系统填充符号替代显示) |
||
图像填充 |
√ |
√ |
||
纯色填充 |
√ |
√ |
||
点符号填充模式(品字填充) |
√ |
√ |
||
渐变填充 |
不支持 |
不支持 |
||
u 对于面符号轮廓线的支持与线型符号的完全一致。 u 对于自定义填充符号,矢量瓦片风格仅支持包含一个填充子层的填充符号,填充子层可以为图像填充或者符号填充类型。 |
||||
线型 符号 |
系统线型 |
|
√ |
不支持 (将使用实线替代显示) |
|
√ |
√ |
||
铁路符号 |
√ |
√ |
||
带边线的道路符号 |
√ |
√ |
||
虚线,支持 短横线(系统线型) 通过虚实模式组合构成的任意虚线 |
√ |
√ |
||
子线端头符号 |
不支持 |
不支持 |
||
子线偏移 |
√ |
不支持 |
||
其他子线类型【非短横线(系统线型)】 |
不支持 |
不支持 |
图层类型 |
测试范围 |
分布式数据图层 是否支持 |
矢量瓦片服务 是否支持 |
|
点图层 |
单值专题图 |
|
√ |
√ |
分段专题图 |
|
不支持 |
不支持 |
|
统一风格标签专题图 |
标签字段为单字段 |
√ |
√ |
|
标签字段为简单字段表达式 (目前支持通过“||”符号串接若干个单字段) |
√ |
不支持 |
||
线图层 |
单值专题图 |
单值字段为单个字段 (目前单值项不支持多余3000个的情况) |
√ |
√ |
单值字段为字段表达式 |
不支持 |
不支持 |
||
分段专题图 |
|
不支持 |
不支持 |
|
统一风格标签专题图 |
标签字段为单字段 |
√ |
√ |
|
标签字段为简单字段表达式 (目前支持通过“||”符号串接若干个单字段) |
√ |
不支持 |
||
面图层 |
单值专题图 |
单值字段为单个字段 (目前单值项不支持多余3000个的情况) |
√ |
√ |
单值字段为字段表达式 |
不支持 |
不支持 |
||
分段专题图 |
|
不支持 |
不支持 |
|
统一风格标签专题图 |
标签字段为单字段 |
√ |
√ |
|
标签字段为简单字段表达式 (目前支持通过“||”符号串接若干个单字段) |
√ |
不支持 |
专题图类型 |
专题图设置内容 |
分布式数据图层 是否支持 |
矢量瓦片服务 是否支持 |
|
点标签 |
换行设置 |
√ |
不支持 (默认使用MapBox自己的换行处理规则) |
|
标签与点的对齐方式 |
√ |
不支持 (默认使用MapBox自己的换行处理规则) |
||
标签与点的间隔 |
√ |
不支持 (默认使用MapBox自己的换行处理规则) |
||
文字效果:加粗、斜体、轮廓 |
√ |
仅支持加粗 |
||
文字效果:删除线、下划线、阴影,不固定文字大小 |
不支持 |
不支持 |
||
标签避让缓冲区 |
√ |
不支持 (默认使用MapBox自己的换行处理规则) |
||
文字大小设置 |
√ |
√ |
||
文字的字体,测试了常用字体 |
微软雅黑 |
√ |
√ |
|
文泉驿微米黑 |
不支持 Java桌面无法设置该字体 |
不支持 Java桌面无法设置该字体 |
||
宋体 |
√ |
√ |
||
黑体 |
√ |
√ |
||
沿线标注 |
标签沿线显示方向 |
√ |
√ |
|
沿线字相对角度 |
√ |
不支持 |
||
标签字间距倍数 |
不支持 |
不支持 |
||
沿线周期间距(循环间隔) |
不支持 |
不支持 |
||
对齐方式(中心基线对齐) |
不支持 |
不支持 |
||
标签背景 |
目前只支持矩形标签背景 |
√ |
√ |
对应分布式数据的矢量瓦片服务显示,还有存在如下不支持内容。
l MapBox样式不支持点、线、面单值专题图的偏移设置。
l 对于标签专题图所使用的标注字段,目前只支持原生字段值,无法展示SQL的函数计算结果,如 name || ‘_’|| type。
l 对同一点数据集,不支持基于该点数据集的单值图和标签的同时存在,否则会出现点专题图的点符号丢失的情况;不过,可以使用多个点普通图层替代点单值专题图,也就是基于单值字段,不同单值的点数据拆分到独立的点数据集中,间接达到不同单值的点显示不同的点符号,并显示点的标签的效果。
l 对同一点数据集,同时存在点普通图层和基于该图层制作的标签专题图时,MapBox不支持即设置点符号又设置标签背景;否则,点符号会丢失,标签虽然保留,但是,标签背景将偏离标签文字。
l MapBox样式只支持两种沿线显示方向(沿线的法线方向以及从上到下,从左到右),若地图设置了其他沿线显示方向,矢量瓦片将使用“从上到下,从左到右”的方向放置标签。
l 地图中的文本需要设置固定大小,否则,矢量瓦片显示的文字效果与原地图可能存在差异。
l 文字使用了加粗效果时,需要保证计算机中有相应字体的粗体字库,这样生成的矢量瓦片中文字的加粗效果才有效,例如:文字使用了微软雅黑字体,并设置加粗,那么您的电脑中要具有微软雅黑粗体字库。
设置内容 |
测试范围 |
分布式数据图层 是否支持 |
矢量瓦片服务 是否支持 |
颜色透明度 |
颜色透明度设置 |
不支持 |
不支持 |
图层属性设置 |
图层透明度 |
不支持 |
不支持 |
道路十字路口优化 |
不支持 |
不支持 |
|
过滤小对象 |
不支持 |
不支持 |
|
符号随图缩放 |
不支持 |
不支持 |
|
显示压盖对象 |
不支持 |
不支持 |
mvt矢量瓦片服务还不能支持所有的分布式数据图层风格,例如:图层符号化方面,mvt矢量瓦片服务对系统符号支持的不好,不过可以通过其他方式间接达到预期效果,如:不支持的虚线系统线型,可以基于短横线(系统线型)创建新线型,通过调整短横线的虚实间隔获得预期虚线线型符号;专题图方面,分布式数据支持的专题图类型mvt矢量瓦片服务也是支持的,但是对于专题图的设置方面,mvt矢量瓦片服务基本不支持,原因在于mvt矢量瓦片是采用的MapBox规范,所以一些设置,如标签专题图中标签的换行、对齐等都由MapBox渲染引擎自己处理;因此,综合看来,mvt矢量瓦片服务基本可以支持绝大部分的分布式数据图层风格。