基于 Ganos 百行代码实现亿级矢量空间数据在线可视化

本文介绍了如何使用Ganos时空引擎的稀疏矢量金字塔(SVP)索引技术,通过百行代码实现亿级矢量空间数据的在线快速显示和流畅地图交互。Ganos利用空间索引减少90%数据计算量,1亿数据生成金字塔只需10分钟,实时渲染响应时间达秒级。文章还详细讲解了使用步骤、实战案例及与PGAdmin的集成。
摘要由CSDN通过智能技术生成

01 引言

如何对时空数据库中的亿级矢量空间数据进行在线可视化一直是业界难题。因数据体量大,传统方法需要将数据库中数据进行基于缓存切片的服务发布才能可视化,操作流程冗长,且有一大堆需要考虑的问题:

  • 如果对矢量数据进行预切片,数据要切多久?切多少级合适?存储瓦片的硬盘空间够用吗?
  • 如果使用实时瓦片,实时渲染瓦片的响应时间能保证吗?
  • 如果使用矢量瓦片,小比例尺的瓦片可能会有多大体积?传输会不会成为瓶颈?前端渲染能承受多大的数据量?

    如果是要快速浏览数据库中的大规模在线数据,传统用于“底图服务”的离线切片生产流程几乎无解,不但费时费力,又无法在线联机处理。黑科技来了,本文介绍如何使用RDS PG或PolarDB(兼容PG版或Oracle版)的Ganos时空引擎提供的数据库快显技术,仅用百行代码实现亿级海量几何空间数据的在线快速显示和流畅地图交互,且无需关注切片存储和效率问题。

02 技术特性解读

Ganos的在线快显处理的核心是将数据库和可视化进行了关联,提供了一种新的可视化索引技术——稀疏矢量金字塔(Sparse Vector Pyramid,SVP)索引。SVP具备两个关键特性:快与省

其中,快指两个阶段的快:

  • 金字塔创建快:Ganos利用空间索引对数据在空间上进行密集度划分,根据密集度建立一种稀疏矢量金字塔索引,相比传统切图流程减少了90%的数据计算量。同时,创建金字塔采用了完全并行处理模式,即使1亿条地类图斑数据生成金字塔也仅需耗费约10分钟时间。
  • 数据展现快:Ganos采用了视觉可见性剔除算法,根据Z-order排序,过滤掉大量不影响显示效果的数据,从而加快实时显示的效率。Ganos支持直接输出PNG格式的栅格瓦片和MVT格式的矢量瓦片,1亿地类图斑数据实时渲染显示的响应时间都达到秒级。

省也具有两个维度:

  • 节省磁盘空间:1亿条地类图斑数据生成金字塔索引仅仅占据原表5%大小的额外空间。
  • 节省开发时间:仅使用简单的SQL语句,通过调整语句参数即可灵活控制显示效果。

03 使用步骤

Ganos的快显引擎使用上非常简洁,已高度封装了SQL函数。需要注意的是,第一次使用快显引擎之前,需要显式创建对应的扩展模块,执行的语句如下:

CREATE EXTENSION ganos_geometry_pyramid CASCADE;

通过执行以上语句,快显引擎的计算组件将会被加载起来。

3.1 建立稀疏矢量金字塔

假设您已创建了某个矢量大表并导入了数据,接着就可以使用Ganos的st_buildpyramid方法创建矢量金字塔。

方法原型如下,更详细的参数描述可以参考官方文档

boolean ST_BuildPyramid(cstring table, cstring geom, cstring fid, cstring config)

注:*左右滑动阅览

其中

  • table:矢量数据所在的表名。
  • geom:矢量字段名。
  • fid:矢量要素记录的唯一标识,支持Int4/Int8类型。
  • config:json格式的配置参数字符串。
    • 在本例中,我们指定矢量金字塔的名称和使用的逻辑瓦片大小(这个瓦片大小并非真实存在的瓦片,仅表示一种空间上的逻辑划分)

实际调用如下:

ST_BuildPyramid('points', 'geom', 'gid', '{"name":"points_geom","tileSize":512}')

注:*左右滑动阅览

我们为表points的geom字段创建了一个矢量金字塔,金字塔名我们指定为points_geom,同时设定金字塔的逻辑瓦片大小为512。

3. 2 获取栅格瓦片

栅格瓦片是图片形式的瓦片(Tile),是使用最广泛的一种地图瓦片形式。Ganos的ST_AsPng方法提供了在数据库端将矢量数据按需动态渲染为栅格瓦片的功能。该功能提供了最基础的栅格符号化能力,更多面向一些不需要复杂符号化的轻量级场景,如数管系统中。

方法原型如下,更详细的参数描述可以参考官方文档

bytes ST_AsPng( cstring name, cstring tile, cstring style)

其中

  • name:金字塔表名。
  • tile:瓦片索引行列号&#x
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值