Ganos三维引擎系列(四):路网与地形贴合

本文涉及的产品
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
云原生数据库 PolarDB 分布式版,标准版 2核8GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 本文介绍了阿里云多模态时空数据库Ganos三维引擎在交通领域的专题应用,帮助业务侧快速实现三维地形与高精路网的自动贴合。Ganos三维引擎支持三大类存储结构:表面网格模型、体网格模型与3D实景模型,其中表面网格模型(SFMesh)提供了三维地形数据的存储能力,同时提供了与矢量三维(Polygon3D)的贴合功能,帮助用户降低交通领域三维数据生产处理的难度。

关于Ganos

Ganos是阿里云数据库产品事业部研发的新一代云原生位置智能引擎,它将时空数据处理能力融入了云原生关系型数据库PolarDB、云原生多模数据库Lindorm、云原生数据仓库AnalyticDB和云数据库RDS PG等核心产品中。Ganos目前拥有几何、栅格、轨迹、表面网格、体网格、3D实景、点云、路径、地理网格、快显十大核心引擎,为数据库构建了面向新型多模多态时空数据的存储、查询、分析、服务等一体化能力。

本文介绍的三维引擎能力,依托阿里云云原生关系型数据库PolarDB建设输出。

关于Ganos三维引擎

三维数据管理是当前时空领域的热点,以数字孪生为代表的一系列三维空间系统应运而生,推动各类管理业务逐步走向精细。这种背景下,三维数据采集类别越发多样,采集精度越发提升,业务背后的三维空间计算效率与大规模三维模型渲染效率也逐步成为空间信息系统的痛点。

为了解决传统空间技术栈中“文件管、瓦片看、客户端算”所带来的数据资产分散、数据冗余及技术架构复杂问题,Ganos提出了基于大规模元胞网格构建视算一体能力的方案。存储方面,Ganos三维引擎提供了表面网格模型(SFMesh)、体网格模型(VOMesh)与实景模型(Scene)三种存储结构,其中表面网格模型用于存储带有语义的类BIM的精细化三维模型,体网格模型用于存储地质体等匀质/非匀质“场”类三维模型,3D实景模型用于存储倾斜摄影、精白模等用于渲染的三维模型;计算方面,Ganos提供了多种三维空间计算函数,并且将PolarDB弹性并行查询能力(ePQ)拓展到三维计算中,在多个数字孪生应用中实测全空间复杂分析计算效率相较于传统方案有50倍以上的提升;渲染方面,作为数据库产品,Ganos并不直接提供渲染引擎,但依托矢量快显的构建经验,Ganos将快显能力延伸至了三维数据,除了库内提供模型简化、纹理材质处理外,还提供了三维存储结构统一动态构建三维瓦片的方式直接对接渲染引擎提供可视化服务。

关于三种三维存储结构的差异,可以参考系列文章的第一篇:《Ganos三维引擎系列(一):倾斜摄影数据管理与可视化功能解析

基于Ganos三维引擎的路网地形处理能力

业务需求

在交通领域需要构建车流相关的仿真应用,往往需要先采集高精路网数据,之后形成高速公路的孪生底板做为支撑。但我们会发现,高精路网与可以公开获取到的地形数据(DEM)往往有较大的精度差距,这样会造成路网悬浮在地形上空或者穿插在地形下方,造成使用不便。一般情况下,需要将这两份数据导入三维建模软件,之后会手动编辑三角网的方式,让它们可以贴合,这个过程往往需要大量的时间与人力成本。

随着数字孪生在各领域的应用纵深,如何快速的融合各类数据达到业务要求成为普遍研究的问题,高速孪生中地形与路网快速贴合能力的建设正是其中之一。

功能介绍

地形与路网贴合能力主要依赖ST_SnapToPolygon和ST_Loft两个函数实现,其中:

  • ST_SnapToPolygon函数主要用于Polygon3D对象与SFMesh对象的贴合
  • ST_Loft函数主要用于通过三维截面与方向生成隧道

1、ST_SnapToPolygon

对于给定的地形(SFMesh)和道路面(Polygon3D),处理道路两侧的地形顶点,使其平滑衔接到道路表面。

语法

sfmesh ST_SnapToPolygon(sfmesh  sfmesh, geometry geom, f8 zlowd, f8 zupd, f8 buffer, i4 times);

参数

参数名称

描述

sfmesh

地形mesh对象

geom

道路面对象(Polygon3D)

zlowd

道路面沿 Z 方向处理时,路面下方的最大距离,取值范围(0, +\infin

地形部分到路面距离大于 zlowd 的不处理,对应现实中的桥梁地形

zupd

道路面沿 Z 方向处理时,路面上方的最大距离,取值范围(0, +\infin

地形部分到路面距离大于 zupd 的不处理,对应现实中的隧道地形

buffer

平滑贴合处理的缓冲区距离,取值范围(0, +\infin

buffer 取值越大,对路侧地形的处理影响范围越大,建议 buffer 值小于道路宽度的 5 倍,生成效果比较理想

times

平滑处理的次数,次数越多效果越好。

默认值:20,建议取值范围在[5, 20]之间。

示意图

示例

SELECT BOX3D(ST_SnapToPolygon(    ST_3DIntersection(ST_3DMakeSphere(1.0,4),'BOX3D(-1 -1 0, 1 1 1)'::box3d),'POLYGON((-5 -0.1 0.5, 5 -0.1 0.5, 5 0.1 0.5, -5 0.1 0.5, -5 -0.1 0.5))',0.5,0.5,0.5,10));-------------------------------------- BOX3D(-1-10,110.782785594463348)

2、ST_Loft

将截面沿三维路径进行放样/挤出,生成闭合的三维体。

语法

  • meshgeom ST_Loft(geometry geom2d,  geometry line3d,  int4 chamfer);

参数

参数名称

描述

geom2d

geometry 对象,仅支持  Polygon2D 类型

line3d

geometry 对象,支持 LineString3D 类型

chamfer

倒角平滑的分段数,取值范围(2, 10)

描述

将二维Polygon沿着三维路径进行放样/挤出, 三维路径的拐角处采用圆弧贝塞尔曲线进行倒角平滑。

chamfer 数值越大越平滑,产生的 meshgeom 顶点也越多。

示意

将一个带洞的二维多边形沿三维路径放样,chamfer 参数为 4 。

示例

SELECT ST_AsText(ST_Loft('POLYGON((0 0, 1 0, 1 1, 0 0), (0.5 0.5, 0.6 0.5, 0.6 0.6, 0.5 0.5))','LINESTRING(0 0 0, 10 0 0, 10 10 0, 10 10 10)',5));---------------------------------------------------------------MESHGEOM(PATCH(POLYGON Z ((0-0.3333333333333330.666666666666667,00.666666666666667-0.333333333333333,0-0.333333333333333-0.333333333333333 ...

Ganos 三维数据管理分析的技术优势

相比于传统的技术方案,Ganos提供的方案特点在于:

  • 使用SQL即可实现三维数据的处理工作,经实测,数秒即可完成百公里路网与地形的贴合
  • 提供了隧道等复杂三维模型的生成能力,可以帮助客户增加场景的丰富程度
  • 生成的模型存储在数据库中,可以支撑后续仿真场景中的更多空间查询与计算

功能使用案例

1. 创建扩展

create extension ganos_geometry cascade;create extension ganos_sfmesh cascade;create extension ganos_importer cascade ;

2. 数据入库

使用 MeshLab 生成一份随机地形,效果如下

效果图:

 

编写SQL入库:

  • 编写 import.sql 文件,将OBJOBJOBJ替换成您自己的地形文件内容
-- !!需要自己将 $OBJ$ 替换成 地形文件的文本内容!!SELECT ST_ImportOBJ('test_obj'::text,'$OBJ$'::bytea,'1');
  • 执行 import.sql 文件,并验证是否成功
\i import.sql-------------- (t表示导入成功,其他表示失败) t
SELECT ST_3DArea(obj_data)from test_obj;-------------------- (能够正确计算出面积,表示数据入库成功)1097.9653735595505(1 row)

2. 查看库内数据

  • 方式1:文本方式查看
select id, st_astext(obj_data::meshgeom)from test_obj;------------------1| MESHGEOM(PATCH(INDEXSURFACE Z (VERTEX(003.519342,103.48787,203.488642,303.541854,403.656553,503.819599,603.998203,704.186495,804.405378,904.687479,1005.066125,1105.567331,1205.43576,1305.192973,1405.011576,1504.914459,1604 ......
  • 方式2:导出成 gltf 查看
-- 保存查询结果为 t.gltf 文本文件select st_asgltf(obj_data::meshgeom)from test_obj;

  • 方式3:使用 PolarAdmin 进行查看 (可以通过访问Ganos官网,扫描页面下方的二维码加群获取技术支持)


4. 路网地形贴合

  • 道路数据:POLYGON((10 0 5, 12 0 5, 12 30 5, 10 30 5, 10 0 5))
  • 地形和道路的位置关系如下图所示,可以看出道路部分在地面以下,部分悬空在地面上方


  • 将地形贴合到上述的道路面,生成一条id 为2 的新纪录
INSERTINTO test_obj
SELECT2,'2', ST_SnapToPolygon(obj_data,'POLYGON((10 0 5, 12 0 5, 12 30 5, 10 30 5, 10 0 5))',10,10,5)from test_obj where obj_id ='1';
  • 导出处理结果为gltf,和道路叠加查看,可以看出地形已经平滑的贴合到路面上了
select st_asgltf(obj_data::meshgeom)from test_obj where obj_id ='2';

   

5. 案例展示

以下为Ganos贴合的川渝高速某路段数据,业务为:30m分辨率地形贴合双向高速路网

数据量:

  • 单向道路长度  8012 m
  • 地形顶点数量:60584 个
  • 地形贴合处理耗时:2.15 秒

处理流程:

  • 使用 ST_SnapToPolygon 将地形贴合到每一条道路的表面,导出gltf加载到 Blender;
  • 在超出ST_SnapToPolygon贴合阈值且地形高于路面的部分,使用 ST_Loft 生成隧道涵洞,导出gltf加载到 Blender;
  • 对于地形低于路面且超出ST_SnapToPolygon贴合阈值部分,可以使用Blender自带的的建模工具生成圆柱型桥墩,也可以使用Ganos的ST_Buffer函数构造一个圆形底面,再使用ST_Loft 挤压出桥墩,在Blender里修正即可;
  • 使用 Blender 修剪出隧道口,检查并修正路侧地形;

总结

Ganos作为全球首个库内原生提供多种三维数据存储分析能力的空间数据库,已经将狭义的空间数据拓展至“空天地、室内外、地上下、动静态”等全空间范畴,从数据库系统最底层为物理世界数字化提供时空处理框架。本文介绍的地形与路网贴合能力,证明了Ganos有能力支撑三维空间计算在各领域中的专业应用,未来Ganos还将提供更多高效的库内三维空间分析能力,推动各行业数字孪生应用真正走向“视算一体”。

相关文章
|
数据可视化 定位技术
GIS空间分析 三维分析2 TIN创建与三维可视化
本文中,我将带你了解如何在ArcGIS中使用DEM数据制作三维模型
287 0
|
6月前
|
存储 算法 Cloud Native
Ganos地理网格引擎支撑无人机路径规划能力实践
随着新能源技术的迅猛发展,低空经济已经逐步成为新的战略性新兴产业,但不同于传统的地表活动,低空活动具有立体性、区域性、融合性等特点,这些特点对于如何安全引导低空活动的顺利开展带来了一系列需要解决的技术问题。Ganos地理网格引擎提供了基于网格的路径规划能力,可以使用DEM、DSM、倾斜摄影等数据构建复杂环境下的无人机路径规划应用。
|
2月前
|
存储 数据可视化 定位技术
Ganos矢量快显功能
Ganos的2D矢量快显功能提供了亿级二维矢量数据的高效可视化解决方案。通过创新性的稀疏金字塔索引技术,Ganos大幅减少了切片构建时间和存储开销,并支持动态更新。相较于传统离线切片方式,Ganos能在普通云实例上快速构建和更新切片,显著提升了响应速度和更新效率,同时大幅降低了存储需求。本文详细介绍如何使用Ganos进行2D矢量数据的准备、稀疏金字塔构建、切片获取及Web地图服务搭建,帮助读者快速上手体验这一高效功能。
38 1
|
数据可视化 定位技术
GIS空间分析 三维分析3 要素三维可视化
在本文中,我们使用ArcScene软件三维化了图层要素,并分析了要素间的关系,这对决策有着很重要的作用🎈🎈🎈
163 0
|
数据可视化 定位技术
GIS空间分析 三维分析1 空间插值与三维可视化
在本文中,你将学习到ArcGIS三维可视化,如何利用三维可视化发现潜在的数据规律
128 0
|
定位技术 内存技术
GIS空间分析 三维分析4 制作飞行动画
本文中,我们利用ArcScene软件用3种方法制作了飞行动画
297 0
|
编解码 定位技术
GIS空间分析 数字地形分析2 基本地形因子的提取
在本文中,你将学习到如何利用DEM数据在ArcGIS中提取出坡度、坡向等地形因子。
308 0
|
6月前
|
编解码 JavaScript 定位技术
基于Pix4Dmapper的三维模型重建应用——空间分析选址
基于Pix4Dmapper的三维模型重建应用——空间分析选址
131 1
|
存储 关系型数据库 Serverless
Ganos三维引擎系列(二):可视域与阴影率分析
本文介绍了基于阿里云多模态时空数据库Ganos三维引擎构建可视域分析与阴影率分析的应用方法。Ganos三维引擎支持三大类存储结构:表面网格模型、体网格模型与3D实景模型,其中表面网格模型用于存储带有语义的类BIM的精细化三维模型,体网格模型用于存储地质体等非匀质“场”类三维模型,3D实景模型用于存储倾斜摄影、精白模等用于渲染的三维模型,三种存储结构都提供了原生数据类型、空间索引、分析算子、导入导出工具、可视化支撑等功能,为数字孪生类应用提供闭环的存算显能力。
|
存储 SQL 数据可视化
Ganos三维引擎系列(一):倾斜摄影数据管理与可视化功能解析
本文介绍了阿里云多模态时空数据库Ganos三维引擎在倾斜摄影数据管理中的应用。Ganos三维引擎支持三大类存储结构:表面网格模型、体网格模型与3D实景模型,其中表面网格模型用于存储带有语义的类BIM精细化三维模型,体网格模型用于存储地质体等非匀质“场”类三维模型,3D实景模型用于存储倾斜摄影、精白模等用于渲染的三维模型,三种存储结构都提供了原生数据类型、空间索引、分析算子、导入导出工具、可视化支撑等功能,为数字孪生类应用提供闭环的存算显能力,本文重点介绍基于3D实景模型开展倾斜摄影数据管理与可视化等功能。