矢量金字塔实践指南

矢量金字塔是一种能够快速显示大规模空间几何数据的而设计的一种结构,其中会涉及到地理数据概化以及瓦片生成。

在安装好 Yukon 以后,我们可以使用 create extension yukon_vector_pyramid; 来创建矢量金字塔扩展。

  1. 导入数据

    这里我先新建一个数据库 pyramidtest:

    create database pyramidtest;
    

    创建完成后,我们可以通过 shp2pgsql ,QGIS ,超图桌面软件将原始数据导入到 Yukon 数据库中。这里我们导入南宁的地理数据集。导入完成后在 DBeaver 显示如下:

    image1

    这里我们就可以看到导入后的数据。

  2. 生成概化数据

    这里我们的数据集名字为 nanning_3857, geometry 的列名为 smgeometry,我们可以使用 ST_BuildPyramid 来生成概化数据。

    select ST_BuildPyramid('public','nanning_3857',
                           'smgeometry',
                           '[
                            {"level": 1,"attribute": ["smid"]},
                            {"level": 2,"attribute": ["smid"]},
                            {"level": 3,"attribute": ["smid"]},
                            {"level": 4,"attribute": ["smid"]},
                            {"level": 5,"attribute": ["smid"]},
                            {"level": 6,"attribute": ["smid"]},
                            {"level": 7,"attribute": ["smid"]},
                            {"level": 8,"attribute": ["smid"]},
                            {"level": 9,"attribute": ["smid"]},
                            {"level": 10,"attribute": ["smid"]},
                            ]');
    

    执行完成后,我们就可以在 pyramid_columns 的元信息表中,查看我们新生成的概化数据:

    image2

  3. 生成矢量瓦片

    生成概化后的数据后,我们就可以使用 ST_BuildTile 生成矢量瓦片:

    select st_buildtile('public','nanning_3857','smgeometry',10);
    

    执行完成后就可以在 DBeaver 中看到矢量瓦片数据:

    image3

其中 id 为 x,y,z 组合而成。

  1. 显示

    生成的矢量金字塔我们可以在超图的 IDesktop 软件中查看:

    image4

相比于原始数据集,我们可以快速显示空间地理数据。