Ganos三维引擎系列(一):倾斜摄影数据管理与可视化功能解析

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 本文介绍了阿里云多模态时空数据库Ganos三维引擎在倾斜摄影数据管理中的应用。Ganos三维引擎支持三大类存储结构:表面网格模型、体网格模型与3D实景模型,其中表面网格模型用于存储带有语义的类BIM精细化三维模型,体网格模型用于存储地质体等非匀质“场”类三维模型,3D实景模型用于存储倾斜摄影、精白模等用于渲染的三维模型,三种存储结构都提供了原生数据类型、空间索引、分析算子、导入导出工具、可视化支撑等功能,为数字孪生类应用提供闭环的存算显能力,本文重点介绍基于3D实景模型开展倾斜摄影数据管理与可视化等功能。

关于Ganos

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

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

关于Ganos三维引擎

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

为了降低技术栈的复杂性,解决三维数据管理方面的痛难点,Ganos自v5.0版本全面推出了三维引擎,库内提供三维空间数据存储、分析与可视化渲染支撑能力。随着多个小版本的迭代,目前Ganos三维引擎已经构建了视算一体的闭环能力,并在多个项目的验证中三维空间计算效率相较传统技术栈有百倍提升。从本篇文章开始,Ganos团队将以系列文章的方式,介绍三维引擎的各项能力。

三维引擎概述

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

表面网格模型

表面网格模型(SFMesh)是一种利用表面三角网格描述的三维模型的存储结构,包括三维模型的几何对象、三维模型的纹理贴图、三维模型的材质等基本信息,Ganos SFMesh支持引用,支持多层次的模型组织结构,主要应用于类BIM的强语义化的三维模型存储与计算分析。

关于SFMesh在业务中的具体应用,请关注Ganos三维引擎系列后续文章。

体网格模型

体网格模型(VOMesh)是一种利用定点、面以及体元综合描述三维空间信息的存储结构,支持存储复杂非匀质多面体数据并进行空间运算。Ganos VOMesh主要用于表示地质体、洋流以及各类场(电磁场、大气场等)等三维不均匀空间。

关于VOMesh在业务中的具体应用,请关注Ganos三维引擎系列后续文章。

实景模型

实景模型(Scene,参考手册)是一种以渲染为主要用途的三维模型存储结构,保留了三维模型的一切信息,包括:材质、纹理、骨骼、动画等,力争最大程度还原模型本身的各类信息。

本文所介绍的倾斜摄影数据管理与可视化功能,就是基于Ganos Scene实现。

Ganos倾斜摄影数据管理与可视化功能

倾斜摄影数据管理现状

倾斜摄影数据管理一直是测绘信息领域的重要工作,当前主要的方式是通过无人机采集倾斜照片后,通过商用数据处理软件开展稀疏、稠密点云提取,随之开展三维重建,最终生成带层级的OSGB数据保存,为支持后续应用往往还需要通过相关软件将osgb转换为3dtiles瓦片,发布三维空间服务后对接渲染引擎进行展示。这种方式带来的问题包括:

  • 数据资产管理混乱。数据存储多份造成冗余分散,存储介质多样无法与其他空间数据进行统一管理与检索,技术栈复杂。
  • 视算分离远离业务。倾斜摄影数据大多用于三维底图的展示,复杂的业务分析往往采用线下方式处理或者前端GPU示意的方式,无法精准指导业务。

在数字孪生应用愈发蓬勃的当下,诸多测绘生产管理部门迫切需要构建统一便捷的数管平台,提供视算一体的能力,开展各类空间数据的一库统管。

Ganos倾斜摄影数据管理整体方案

Ganos倾斜摄影数据管理方案主要分为倾斜摄影入库工具、倾斜摄影库内存储结构与倾斜摄影可视化支撑三部分组成。

1. Ganos倾斜摄影入库工具

为了解决各空间数据快速入库的问题,Ganos提供了一套Importer扩展,可以方便地从多种存储介质导入数据。通过执行如下SQL语句创建该扩展及依赖:

create extension ganos_importer cascade;

创建成功后即可使用ST_ImportOSG函数(参考手册)导入倾斜数据,该函数原型如下:

boolean ST_ImportOSG(cstring table_name, cstring url, cstring options default '{}');

其中table_name参数用于定义osg表名其相关表前缀,导入成功后会在库内生成主表、瓦片表和空间树划分表共计三张(详见下文);url用于定义数据所在存储的路径;options用于对并行度、SRID、导入方式等参数进行配置。

2. Ganos倾斜摄影库内存储

数据导入后生成如下结构的三张表,其中:

  • 主表[table_name]用于存储项目信息、空间参考、空间范围等元数据;
  • 瓦片表[table_name]_tile用于存储瓦片ID、瓦片LOD层级、瓦片父子关系、瓦片元数据、瓦片实体数据等;
  • 空间树划分表[table_name]_tileset用于存储项目倾斜摄影数据的空间结构;

三张表通过项目ID进行关联。

3. Ganos倾斜摄影可视化支撑

使用ST_ImportOSGB函数导入倾斜摄影数据时,已经同步构建了描述整个数据集的空间划分树,存储在空间树划分表中,因此可直接发布为3DTiles服务(标准为3DTiles 1.0)供前端调用,无需切片处理。

空间树可以指向子树或某个B3DM数据。

{
"content": {
"uri": "/tileset/851f8751-1037-44d5-9127-d55fd25b37ed/095a4edf-e818-42b6-8816-151e906c2465",
"boundingVolume": {
"box": [
231.57069396972657,922.3930053710938,-237.97698974609376,
160.7499237060547,0,0,
0,89.12469482421875,0,
0,0,22.76641845703125        ]
      }
  }
}

综上,我们可以仅通过代理3DTiles的HTTP请求,执行对应的SQL语句,构建一个简易的免切片动态3DTiles文件服务(详见下文案例)。

Ganos倾斜摄影数据管理方案的特点

通过以上的介绍我们可以看出,相较于OSGB转3DTiles存储在本地磁盘或对象存储的方案,Ganos倾斜摄影数据管理方案提供了导入-存储-计算-渲染支持全套方案,在不造成数据冗余的情况下,构建了视算一体的“空间数据一库统管”能力,技术栈简单,使用方便,具体说来有如下特点:

  • 实现了倾斜摄影数据的“存算显”一体化全链路

Ganos内置了倾斜摄影数据存储类型Scene,原生提供库内存储能力,数据入库后Scene类型提供了多种空间查询与数据处理算子,供用户开展后续分析工作,最终处理完的结果动态生成3DTiles瓦片对接渲染引擎。这样的方式保证所有的操作基于一份数据开展,构建了三维数据“存算显”一体化的完整链路,避免了由于数据切片带来的现势性不足及分析渲染“两张皮”等问题。

  • 平衡了存储成本与应用性能之间的问题

Ganos在倾斜摄影数据入库时,可以选择是否采用"gateway模式”,gateway为布尔型变量,用于在库内构建Scene类型后判断是否真正将倾斜摄影数据写入库中,对于看重成本的用户而言,可以使用gateway将数据保留至对象存储,仅在库内构建类型,这种情况下依然可以对倾斜摄影对象开展各类空间查询、分析与渲染操作,只是效率会略低于入库模式。

  • 提供了海量的倾斜摄影数据处理能力供下游应用开发

Ganos Scene除了提供基础的三维空间关系判断算子外,还提供三维模型简化、纹理裁剪与简化等轻量化能力,同时为了满足更加复杂的业务场景,Scene在库内提供了视锥构造、可视体、射线求交等基础算子,用于解决可视域分析、阴影率分析等往往需要前端GPU处理的业务,相较于传统GPU前端方案,Ganos构造出的可视体等对象可精准计算出轮廓与体积,并可长期存储在库内,用于开展更进一步的业务分析。该能力已经应用于智慧园区中传感器布设分析等场景。

Ganos三维引擎系列后续文章会专题介绍库内开展可视域、阴影率等三维分析的具体方法与技术优势

功能使用案例

我们以存储于OSS上的某地区倾斜摄影数据(约93GB,40万瓦块)为例,演示倾斜数据管理与可视化的流程。

1. 数据入库

由于我们准备以并行方式入库,因此需要参照上文提前创建目标表。

创建完目标表后执行如下SQL语句,注意保持表名一致:

create extension ganos_importer cascade;select ST_ImportOSGB('test_osgb','OSS://<ak>:<ak_secret>@oss-cn-beijing-internal.aliyuncs.com/b1/OSGB','{"parallel":16,"gateway":true,"project_name":"prj_1"}');

语句中指定使用gateway模式入库,该模式将极大减小数据库存储压力,但调用时相比存储在数据库中会有一定延迟。

2. 查看库内数据

查看主表数据:

SELECT PROJECT_ID, PROJECT_NAME, SRID, ST_ASTEXT(ANCHOR), AUX
FROM TEST_OSGB;

查看某个瓦块数据:

SELECT PROJECT_ID, PROJECT_NAME, UID, LOD, PARENT, CHILDREN
FROM TEST_OSGB_TILE
WHERE PROJECT_ID ='0E83090E-0658-4E18-B746-D93ECBCF3B23'LIMIT1;

查看某个tileset的数据:

SELECT PROJECT_ID, PROJECT_NAME, UID, TILESET::TEXTFROM TEST_OSGB_TILESET
WHERE PROJECT_ID ='0E83090E-0658-4E18-B746-D93ECBCF3B23'LIMIT1;

3. 编写可视化服务与前端页面

我们使用Node.js编写一个简易的后端服务,实现代理3DTiles请求,并以Cesium作为前端框架展示结果。

首先在用户自定义目录下编写依赖文件package.json

{
"dependencies": {
"koa": "^2.14.2",
"koa-router": "^12.0.0",
"koa-send": "^5.0.1",
"pg": "^8.10.0"  }
}

在本目录下执行npm install安装依赖库。

在同一目录下创建Node.js脚本文件index.js

constKoa=require('koa');
constSend=require('koa-send');
constRouter=require('koa-router');
constrouter=newRouter()
const { Pool } =require('pg');
constpool=newPool({ user: <YOUR_USER>, host: <YOUR_HOST>, database: <YOUR_DB_NAME>, port: <YOUR_PORT> });
constTABLE_NAME='test_osgb'constPROJECT_NAME='prj1'router.get('/', (_) =>Send(_, '/index.html'))
/* get metadata of current project */router.get('/project', async (ctx) => {
constsql=`SELECT (REGEXP_MATCHES(ST_ASTEXT(ST_TRANSFORM(ANCHOR,4326)), 'POINT Z \\((.*?)\\)'))[1] _ANCHOR, PROJECT_ID FROM ${TABLE_NAME}WHERE PROJECT_NAME='${PROJECT_NAME}';`const { rows: [{ _anchor, project_id }] } =awaitpool.query(sql)
constanchor=_anchor.split(' ').map(x=>parseFloat(x))
consturl=`/tileset/${project_id}/${project_id}`ctx.body= { url, anchor }
})
router.get('/tileset/:project_id/:uid', async (ctx) => {
const { params: { project_id, uid } } =ctxconstsql=`SELECT TILESET FROM ${TABLE_NAME}_TILESET WHERE PROJECT_ID=$1::UUID AND UID=$2::UUID;`const { rows: [{ tileset }] } =awaitpool.query(sql, [project_id, uid])
ctx.body=tileset})
router.get('/b3dm/:project_id/:uid', async (ctx) => {
const { params: { project_id, uid } } =ctxconstsql=`SELECT ST_ASB3DM(TILE) TILE FROM ${TABLE_NAME}_TILE WHERE PROJECT_ID=$1::UUID AND UID=$2::UUID;`const { rows: [{ tile }] } =awaitpool.query(sql, [project_id, uid])
ctx.body=tile})
newKoa().use(router.routes()).listen(5500, '0.0.0.0');

在同一目录下创建HTML文件index.html

<!DOCTYPE html><htmllang="en"><head><metacharset="utf-8"><scriptsrc="https://cesium.com/downloads/cesiumjs/releases/1.89/Build/Cesium/Cesium.js"></script><linkhref="https://cesium.com/downloads/cesiumjs/releases/1.89/Build/Cesium/Widgets/widgets.css"rel="stylesheet"><style>html,
body,
#cesium_container {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
overflow: hidden;
    }
</style></head><body><divid="cesium_container"></div><script>Cesium.Ion.defaultAccessToken=<SET_YOUR_OWN_TOKEN_HERE>constdisable_opt= ['timeline', 'animation', 'infoBox', 'navigationHelpButton']
      .reduce((opts, opt) => (opts[opt] =false) ||opts, {})
constviewer=newCesium.Viewer('cesium_container', disable_opt)
fetch('/project')
      .then(res=>res.json())
      .then(({ anchor, url }) => {
constposition=Cesium.Cartesian3.fromDegrees(...anchor)
constmodelMatrix=Cesium.Transforms.eastNorthUpToFixedFrame(position)
consttileset=newCesium.Cesium3DTileset({ url, modelMatrix })
tileset.readyPromise.then(() =>viewer.zoomTo(tileset))
viewer.scene.primitives.add(tileset)
      })
</script></div></body></html>

在同一目录下执行如下命令启动服务:

node index.js

浏览器打开地址localhost:5500即可浏览数据,局部效果如下:

总结

Ganos作为全球首个库内原生提供多种三维数据存储分析能力的空间数据库,已经将狭义的空间数据拓展至“空天地、室内外、地上下、动静态”等全空间范畴。自2022年10月Ganos V5.0首次发布孪生全空间数据库后,Ganos已经从数据库系统最底层为物理世界数字化提供时空处理框架,探索物理世界模型与数字孪生世界模型的映射提供全新的多模态数据类型体系,解决全空间多模态数据的存储、索引、查询和分析计算问题。


相关文章
|
5天前
|
监控 数据挖掘 BI
探索项目管理系统:解析五大功能,洞悉项目成功的关键
项目新手常忽视管理系统的价值,而高手已借助系统实现规划清晰。优秀的项目管理系统必备五大功能:项目WBS分解、图表报表、工时管理、团队协作和任务自动化。WBS能将复杂项目拆分成可管理任务,明确责任,评估时间和资源需求,便于跟踪进度。Zoho Projects作为示例,支持创建任务层级,利用甘特图和资源利用图监控进度和资源分配,工时管理则帮助控制项目时间和成本。同时,系统促进团队协作,如通过即时通讯和知识库增强团队凝聚力,而任务自动化则减少错误,提升效率。
22 1
|
5天前
|
SQL 存储 数据可视化
Ganos H3地理网格能力解析与最佳实践
本文介绍了Ganos H3的相关功能,帮助读者快速了解Ganos地理网格的重要特性与应用实践。H3是Uber研发的一种覆盖全球表面的二维地理网格,采用了一种全球统一的、多层次的六边形网格体系来表示地球表面,这种地理网格技术在诸多业务场景中得到广泛应用。Ganos不仅提供了H3网格的全套功能,还支持与其它Ganos时空数据类型进行跨模联合分析,极大程度提升了客户对于时空数据的挖掘分析能力。
|
5天前
|
数据可视化 搜索推荐 BI
深度解析好用项目管理工具的功能优势
在选择项目管理工具时,重点在于全面的功能和高性价比。好工具应具备资源利用图(避免过度分配或闲置资源),团队协作功能(促进沟通与进度追踪),质量管理(如问题跟踪和自定义工作流),项目规划和跟踪(甘特图支持),任务管理(任务分解和依赖关系),以及费用跟踪。Zoho Projects、Microsoft Project、Jira等工具各有价格差异,例如,对于50个用户,Microsoft Project最贵,Zoho Projects最实惠,性价比高,适合中小企业。
36 2
|
5天前
|
域名解析 网络协议 Serverless
阿里云DNS常见问题之阿里云DNS不再支持自定义NS名称功能如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
5天前
|
开发框架 前端开发 开发者
【Uniapp 专栏】Uniapp 的状态管理功能深度解析
【5月更文挑战第13天】Uniapp 的状态管理对于构建复杂跨平台应用至关重要,它包括全局变量、Vuex 风格管理。核心概念有 State、Actions 和 Mutations。通过状态定义、动作设计和突变管理,提高开发效率和代码可维护性。实际案例和与其他框架比较显示了 Uniapp 的优势。理解并有效利用状态管理,能提升应用质量和开发效率。
【Uniapp 专栏】Uniapp 的状态管理功能深度解析
|
5天前
|
安全 前端开发 Java
10:基于Servlet模拟用户登录功能的实现与解析-Java Web
10:基于Servlet模拟用户登录功能的实现与解析-Java Web
26 3
|
5天前
项目管理工具计划模板解析:项目管理工具的双重功能与创建方法
本文介绍了项目计划模板的含义和重要性。项目计划模板是用于规划项目结构的可编辑文档,帮助团队明确任务、分配责任和管理时间。模板有助于跟踪项目进度、避免任务冲突,并简化会议安排。创建模板通常涉及选择合适的项目管理工具,如Zoho Projects或Microsoft Excel,然后分解任务、定义日期并持续调整。在Zoho Projects中,用户可以按步骤创建模板,包括命名、添加任务和设置相关细节。
21 0
|
5天前
|
SQL 数据管理 API
数据管理DMS产品使用合集之阿里云DMS提供API接口来进行数据导出功能吗
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
5天前
|
运维 Cloud Native 数据管理
数据管理DMS产品使用合集之数据归档功能可以在 DMS 上自动分批次执行吗
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
5天前
|
数据管理 关系型数据库 MySQL
数据管理DMS产品使用合集之DMS可以接入其他平台的MySQL数据库,是否还支持无感知变更功能
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。

推荐镜像

更多
http://www.vxiaotou.com