创建矢量金字塔

使用说明

创建矢量金字塔工具可以对SuperMap矢量数据集创建矢量金字塔。

矢量金字塔解决的问题:

矢量金字塔可以大幅提升海量矢量数据在小比例尺下的显示效率,可实现地图浏览秒级响应。例如:千万级地类图斑数据创建矢量金字塔后,全幅显示性能提升10倍,全幅显示时只绘制了约14万个简化后的对象,且显示效果正确。

矢量数据集创建矢量金字塔时,原矢量数据集为最精细的原始层级,基于原始层级的数据,程序按照一定的规则和算法,生成一系列数据简化程度不同的子数据集作为不同金字塔层级对应的数据,金字塔层级越小,数据简化程度越高;具有矢量金字塔的数据集在显示时,地图根据显示比例尺显示合适层级的金字塔层数据,显示比例尺越小,将显示数据简化程度越高的金字塔层,大幅提升地图显示效率。

矢量金字塔对于矢量数据的简化基于特定的算法执行,基本思想为,矢量数据在显示时,随着比例尺的缩小,很多小对象几乎肉眼不可见,一些线条(线对象或者面边界)的弯曲或者走向的细节也变得模糊。简化则是去掉几乎肉眼不可见对象,使用简单线条拟合复杂的线,不再绘制线的复杂细节,这样,即保证了矢量数据在小比例尺下显示效果的正确,又大幅提升了地图显示效率。

关于创建矢量金字塔的数据和金字塔层级的说明:

  • 目前,支持创建矢量金字塔的数据包括:UDBX、PostGIS、Yukon数据源中的点、线、面矢量数据集。

  • 矢量金字塔创建耗费资源(时间、内存和CPU计算资源)较多,实际应用中,矢量数据是否有必要创建矢量金字塔,需根据数据量和地图显示效率的预期目标而定。一般情况下,数据量达到百万级的矢量数据,需要通过矢量金字塔获得小比例尺下流畅的地图浏览体验。

  • 矢量金字塔层级越大,数据简化程度越低,生成金字塔耗时越多。矢量金字塔最小层级和最大层级的设置,需要初步掌握原矢量数据集在不同比例尺下地图显示耗时情况,按需决定是否创建对应层级的金字塔(参见下文:金字塔层级和比例尺对照表);根据测试经验,对于较大比例尺(如大于金字塔层级12级比例尺),原矢量数据浏览效率基本可以满足流畅性要求,创建12层级以上的矢量金字塔并不会明显提升显示效率,且耗费大量资源。

    根据测试经验,对于较大比例尺(如大于金字塔层级12级比例尺),原矢量数据浏览效率基本可以满足流畅性要求,如果地图显示效率明显很低,可以从以下方面排查:

    • 原矢量数据集未创建空间索引,需要重建空间索引。
    • 针对PostGIS矢量数据集,可以开启“简化显示”(位于数据集属性面板中“矢量”页面),可提升显示效率。
  • 表格 1 为金字塔层级和比例尺的对照表,还包含了对应层级的显示分辨率,称为层级分辨率。矢量金字塔的数据简化算法将根据指定的分辨率对数据进行简化,数据简化算法使用的分辨率=层级分辨率*分辨率系数,即:通过“分辨率系数”可以调整对应层级的数据简化程度。

    数据简化算法使用的分辨率数值越大,数据简化程度越高,金字塔生成和显示效率越高,但数据失真度也越高,因此,“分辨率系数”要权衡显示精度和效率两方面因素。

表格 1:不同坐标系下,矢量金字塔层级对应的比例尺和层级分辨率

层级 比例尺 分辨率(度)(坐标系:EPSG 4326) 分辨率(米)(坐标系:EPSG 3857)
0 1:295,829,355.455 0.703125000000 78271.516964020500
1 1:147,914,677.727 0.351562500000 39135.758482010200
2 1:73,957,338.864 0.175781250000 19567.879241005100
3 1:36,978,669.432 0.087890625000 9783.939620502560
4 1:18,489,334.716 0.043945312500 4891.969810251280
5 1:9,244,667.358 0.021972656250 2445.984905125640
6 1:4,622,333.679 0.010986328125 1222.992452562820
7 1:2,311,166.839 0.005493164063 611.496226281410
8 1:1,155,583.42 0.002746582031 305.748113140705
9 1:577,791.71 0.001373291016 152.874056570353
10 1:288,895.855 0.000686645508 76.437028285176
11 1:144,447.927 0.000343322754 38.218514142588
12 1:72,223.964 0.000171661377 19.109257071294
13 1:36,111.982 0.000085830688 9.554628535647
14 1:18,055.991 0.000042915344 4.777314267824
15 1:9,027.995 0.000021457672 2.388657133912
16 1:4,513.998 0.000010728836 1.194328566956
17 1:2,256.999 0.000005364418 0.597164283478
18 1:1,128.499 0.000002682209 0.298582141739
19 1:564.2495 0.000001341105 0.149291070869
20 1:282.12475 0.000000670552 0.074645535435
21 1:141.062375 0.000000335276 0.037322767717
22 1:70.5311875 0.000000167638 0.018661383859

参数说明

参数名 默认值 值域 参数释义 参数类型
数据集     待创建矢量金字塔的SuperMap矢量数据集,目前只支持:UDBX、PostGIS、Yukon数据源中的点、线、面矢量数据集。
可以使用 “打开数据集”工具,打开需要创建矢量金字塔的数据集,将“打开数据集”工具的输出结果作为该参数的输入。
DatasetVector
最小层级 0 [0,最大层级] 最小金字塔层级。 Integer
最大层级 11 [0,16] 最大金字塔层级。金字塔层级越大,数据简化程度越低,生成耗时越多。如何合理设置最大层级,参见上文。 Integer
层级间距 1 {1,2,3,4} 金字塔层级间距,默认为1,表示生成金字塔的层级连续;间距大于1,将越级生成金字塔,例如:最小层级5,最大层级9,间距为2,将只生成5、7、9层级的金字塔。 Integer
分辨率系数 0.75 ≥0.5 矢量金字塔的数据简化算法将根据指定的分辨率对数据进行简化,数据简化算法使用的分辨率=层级分辨率*分辨率系数,即:通过“分辨率系数”可以调整对应层级的数据简化程度。
分辨率系数越大,数据简化算法使用的分辨率数值越大,数据简化程度越高,金字塔生成和显示效率越高,但数据失真度也越高,因此,“分辨率系数”要权衡显示精度和效率两方面因素。
Double
创建方法 拓扑法 {拓扑法,网格法} 数据简化算法,包括:拓扑法和网格法。
与网格法相比,拓扑法对于数据的简化程度更高,创建矢量金字塔需要的内存资源更多,创建耗时也更多,结果矢量金字塔的显示效率更高。
网格法对于数据的简化程度较低,因此,创建矢量金字塔效率更高,但结果矢量金字塔的显示效率不及拓扑法的结果。
需要根据实际的数据情况、机器配置以及矢量金字塔的预期生成效率和结果显示性能多方面因素,选择合适的创建方法。
String

创建矢量金字塔操作支持多线程执行,在 iDesktopX 中,进入“文件”菜单,依次选择“选项”、“环境”,其中的“并行计算线程数”可以指定创建矢量金字塔使用的线程数,如下图所示。

输出结果

创建矢量金字塔工具的结果数据集即为输入的待创建矢量金字塔的SuperMap矢量数据集。

地图制图

具有矢量金字塔的矢量数据支持专题图制图,大幅提升了海量数据地图生产效率和浏览效率。

专题图制图或者图层过滤显示需要使用矢量数据集字段,而矢量金字塔层的数据集默认只保留了原矢量数据集的smid和smgeometry字段,在专题图显示时,当显示到金字塔层级时,该层级的数据需要通过关联关系从原矢量数据集获取字段信息完成专题图显示,经测试,这个过程非常耗时;为此,SuperMap提供了“复制字段到矢量金字塔”的工具,可以将专题图等图层使用到的字段追加到矢量金字塔层的数据集中,无需从原矢量数据集获取字段信息,进一步提升矢量金字塔层的地图显示效率。

复制字段到矢量金字塔工具参数:

参数名 默认值 参数释义 参数类型
数据集   具有矢量金字塔的SuperMap矢量数据集。
可以使用 “打开数据集”工具,打开数据集,将“打开数据集”工具的输出结果作为该参数的输入。
DatasetVector
待复制的字段名   追加到矢量金字塔层数据集的字段,支持指定多个字段。 String

关于兼容性说明

矢量数据集创建矢量金字塔,实质是生成一系列数据简化程度不同的子数据集,这些数据集作为金字塔层的数据,是原数据集的关联数据集,因此,在SuperMap iDesktopX(11.1.0 版本)中,打开具有矢量金字塔的数据集,只能看到原矢量数据集,其所关联的金字塔层数据集是不可见的;而在数据库管理工具中,可以看到金字塔层数据集的表,如下图所示。

SuperMap GIS 11.1.0 及以上版本支持矢量金字塔能力,使用SuperMap iDesktopX 11.1.0 以下版本打开具有矢量金字塔的数据集,金字塔层数据集表将被注册为数据源中的普通数据集,再使用SuperMap iDesktopX 11.1.0 及以上版本打开,这些普通数据集依旧存在,但不会影响矢量金字塔的应用,您也可已通过如下操作,取消注册金字塔层数据集为普通数据集。

取消注册金字塔层数据集为普通数据集

在工具箱中搜索“数据库端SQL操作”工具,如下图所示,打开工具,设置参数:

  1. “待操作的数据源” 具有矢量金字塔数据集所在的数据源,支持 UDBX、PostGIS 数据源;

  2. “SQL命令”:输入如下语句即可:

delete from SmRegister WHERE upper(SmDatasetName) in (select upper(SmPyramidTableName) FROM SmPyramidColumns)

  1. 参数设置完成后,执行,即可取消注册金字塔层数据集为普通数据集,在iDesktopX 工作空间管理器中将不显示金字塔层数据集。