工具集

本文介绍了工具集的用途、基本构成和快速入门等内容。

工具用途

简介

Ganos Utility是对象关系型数据库PostgreSQL兼容版本(PolarDB PostgreSQL版)的一个时空引擎扩展,可以导入、导出、验证多种常见的三维模型文件格式,如OBJ、GLB、IFC、OSGB等,用户可以使用这些函数将不同格式的三维模型数据导入到Ganos引擎中进行处理。

作为Ganos时空引擎的一部分,Ganos Utility可以与各引擎紧密集成。用户可以使用Ganos Utility将导入的三维模型数据直接应用于Ganos时空引擎的场景中,进行进一步的建模、渲染、仿真等操作,这种无缝集成为用户提供了一体化的解决方案,简化了工作流程,提高了开发效率。

  • 导入并查看IFC数据,效果如下图所示:

    image

  • 导入并查看OSGB数据,效果如下图所示:

    image

  • 使用OSGB数据进行可视域分析,效果如下图所示:

    image

主要业务场景

  • 多种文件格式导入导出

    Ganos Utility可以导入、导出和验证多种常见的三维模型文件格式,如OBJ、GLB、IFC、OSGB等,这使得用户可以灵活地处理和编辑各种类型的三维数据。

  • 数据管理和查看

    通过Ganos Utility,用户可以方便地管理和查看三维模型数据。它提供了统一的工具,使用户能够快速导入数据、进行编辑和转换操作,以及导出已编辑好的数据。这大大简化了用户的工作流程,提高了工作效率。

  • 数据验证和校验

    Ganos Utility提供了数据验证和校验功能,确保导入的三维模型数据的有效性和完整性。用户可以使用这些功能来检查数据的格式、结构和一致性,以确保数据的质量,并及时发现和纠正数据错误。

基本构成

Ganos Utility提供了一系列工具函数,包括sfmesh、scene模块的数据导入、数据导出、数据验证功能。

数据导入

  • IFC导入

    IFC(Industry Foundation Classes)是一种开放的、面向行业的数据模型和文件格式,用于描述和交换建筑和基础设施项目的信息。IFC是由国际标准化组织(ISO)制定的标准,旨在促进建筑信息模型(BIM)的协作和集成。

    IFC数据格式是一种基于对象的数据模型,用于表示建筑和基础设施项目中的各种构件、属性和关系。它可以描述建筑物的几何形状、结构、材料、属性、关联关系等多个方面的信息。IFC数据格式不仅仅是几何数据的表示,还包括了建筑物的功能、构建过程、维护和操作等信息。

  • OBJ导入

    OBJ(Wavefront OBJ)是一种常见的三维模型文件格式,用于存储和交换静态三维模型的几何形状和材质信息。

    OBJ 数据格式由两个文件组成:.obj 文件和.mtl 文件。.obj文件包含了模型的顶点、法向量、纹理坐标和面信息。它使用一系列关键字来描述模型的几何属性,如顶点坐标(v)、法向量(vn)、纹理坐标(vt)等。面信息使用顶点索引来定义,以描述多边形的连接关系。.mtl文件包含了模型的材质属性,如颜色、纹理和光照信息。

  • GLB导入

    GLB(GLTF Binary)是一种用于存储和交换三维模型的二进制文件格式。GLB是GLTF(GL Transmission Format)的一种扩展,它将模型的几何形状、材质、纹理、动画和其他相关数据封装在一个单一的二进制文件中,以提供更高效的加载和传输性能。

    GLB数据格式使用了二进制编码,相比于文本格式,它具有更小的文件尺寸和更高的加载速度。这使得GLB文件适用于在线三维模型的传输和实时渲染,如虚拟现实(VR)、增强现实(AR)和WebGL应用。

  • OSGB导入

    OSGB数据类型是一种用于存储和加载3D场景的文件格式。它是OpenSceneGraph(OSG)框架的一部分,用于描述和保存三维模型、纹理、材质等信息。

    OSGB文件是二进制格式的文件,与其他常见的三维文件格式(如OBJ、FBX)相比,OSGB文件具有较小的文件尺寸和较快的加载速度,使其成为处理大型场景的理想选择。

数据导出

3DTile导出

3DTiles是一种用于存储和交换大规模三维地理数据的开放标准格式。它旨在解决在Web平台上高效呈现和可视化大规模三维地理数据的挑战,包括城市模型、地形、点云等。

3DTiles提供了用于组织和渲染瓦片数据的层次化结构,以支持高效的地图渲染和可视化。瓦片可以根据空间位置和级别进行分层组织,使得用户可以根据需要逐级加载和显示数据,从而实现对大规模地理数据的高性能浏览和交互。

数据验证

OSGB验证

OSGB文件是OpenSceneGraph框架中使用的一种二进制文件格式,用于存储和加载3D场景数据。由于其二进制的特性,直接检查数据的有效性可能比较困难,可以使用Utility函数来验证OSGB文件的有效性和完整性。

其他

更多内容请参见Utility SQL参考

快速入门

简介

快速入门文档帮助用户快速理解Ganos Utility引擎的基本用法,包括创建扩展、导入数据、导出数据、数据验证等内容。

更多专业用法可参考Utility最佳实践文章:Ganos三维引擎系列(三):BIM数据管理与可视化功能解析

语法说明

  • 创建扩展。

    -- 创建 Ganos_Utility 扩展
    CREATE EXTENSION ganos_utility CASCADE;
    说明

    建议将扩展安装在public模式下,避免权限问题。

    Create extension ganos_utility with schema public CASCADE;
  • 数据导入。

    -- 导入 glTF 数据到 gltf_table 表, 并绑定设置 id 为 1
    SELECT ST_ImportGLTF('gltf_table', 'OSS://<ak>:<ak_secret>@oss-cn-beijing-internal.aliyuncs.com/bim_wall.gltf', '1');
    
     st_importgltf
    ---------------
     t
    (1 row)
    
    -- 导入 ifc 数据,并生成一个 ifc_ifc_elem 表
    SELECT ST_ImportIFC('ifc', 'OSS://<ak>:<ak_secret>@oss-cn-beijing-internal.aliyuncs.com/CE1314-ACM-C3_LA-ST07_WB-AR-M3_N.ifc'::cstring);
    
     st_importifc
    --------------
     t
    (1 row)
    
    -- 导入 obj 数据到 obj_table 表
    SELECT ST_ImportOBJ('obj_table', 'OSS://<ak>:<ak_secret>@oss-cn-beijing-internal.aliyuncs.com/obj/j3sn.obj', '1');
    
     st_importobj
    --------------
     t
    (1 row)
    
    -- 导入 osgb 格式的倾斜摄影项目,保存到 osgb 表
    SELECT ST_ImportOSGB('osgb', 'OSS://<ak>:<ak_secret>@oss-cn-beijing-internal.aliyuncs.com/osgb');
    
     st_importosgb
    ---------------
     t
    (1 row)
    说明
  • 数据导出。

    -- 将 ifc 项目导出为 3DTiles 格式,并保存到 tile 表中
    SELECT ST_As3DTiles(element, 'tile') from ifc_ifc_elem where family = 'IfcProject';
    
     st_as3dtiles
    --------------
     t
    (1 row)
  • 数据验证。

    -- 验证 osgb 格式的倾斜摄影是否合法
    SELECT * FROM ST_ValidateOSGB('OSS://<ak>:<ak_secret>@oss-cn-beijing-internal.aliyuncs.com/osgb');
    
     valid | reason
    -------+--------
     t     |
    (1 row)
  • 删除扩展(可选)。

    DROP EXTENSION ganos_utility CASCADE;

使用进阶

Ganos Utility支持更多高级参数,提供了自定义配置的能力。

  • IFC导入。

    -- 导入指定的项目
    SELECT ST_ImportIFC('Building', 'OSS://<ak>:<ak_secret>@oss-cn-beijing-internal.aliyuncs.com/mybucket/path_to_ifc'::cstring, '{"project":"building_1"}');
    
    -- 关闭并行导入
    SELECT ST_ImportIFC('local', 'OSS://<ak>:<ak_secret>@oss-cn-beijing-internal.aliyuncs.com/CE1314-ACM-C3_LA-ST07_WB-AR-M3_N.ifc'::cstring, '{"disable_multi_thread":true}');
  • OBJ导入。

    -- 关闭自动三角化
    SELECT ST_ImportObj('test_obj', 'OSS://<ak>:<ak_secret>@oss-cn-beijing-internal.aliyuncs.com/mybucket/path_to_obj.obj', '{"force_triangulate": false}');
  • GLTF/GLB导入。

    -- 导入时 互换Y/Z坐标轴
    SELECT ST_ImportGLTF('test_gltf', 'OSS://<ak>:<ak_secret>@oss-cn-beijing-internal.aliyuncs.com/mybucket/path_to_gltf.glb', 'my_glb', '{"flip_y_z": true}');
  • OSGB导入。

    -- 指定导入并行度
    SELECT ST_ImportOSGB('test_osgb', 'OSS://<ak>:<ak_secret>@oss-cn-beijing-internal.aliyuncs.com/mybucket/path_to_oblique_project/', '{"parallel": 4}');
    
    -- gateway 模式,数据库中只存路径,不存数据
    SELECT ST_ImportOSGB('test_osgb', 'OSS://<ak>:<ak_secret>@oss-cn-beijing-internal.aliyuncs.com/mybucket/path_to_oblique_project/', '{"gateway": true}');
  • OSGB验证。

    -- 并行验证
    SELECT ST_ValidateOSGB('OSS://<ak>:<ak_secret>@oss-cn-beijing-internal.aliyuncs.com/mybucket/path_to_oblique_project/', '{"parallel": 4}');
  • 导出3DTile。

    -- 并行导出
    SELECT ST_As3DTiles(element, 'test', '{"parallel": 4}') from ifc_ifc_elem where family = 'IfcProject';
    
    -- 指定瓦片阈值,大于该体积的几何对象将被切分,单位为 KB
    SELECT ST_As3DTiles(element, 'test', '{"size_threshold": 1024}') from ifc_ifc_elem where family = 'IfcProject';
    
    -- 导出3DTile的坐标系
    SELECT ST_As3DTiles(element, 'test', '{"srid": 4326}') from ifc_ifc_elem where family = 'IfcProject';
    
    -- 3DTile空间切分方法,可选 `oct`(八叉树),`quad`(四叉树),`bsp`(BSP 树)
    SELECT ST_As3DTiles(element, 'test', '{"method": "oct"}') from ifc_ifc_elem where family = 'IfcProject';

SQL参考

详细SQL手册请参见Utility SQL参考