工具集

更新時間:
Copy as MD

本文介紹了工具集的用途、基本構成和快速入門等內容。

工具用途

簡介

GanosBase Utility是對象關係型資料庫PostgreSQL相容版本(PolarDB PostgreSQL)的一個時空引擎擴充,可以匯入、匯出、驗證多種常見的3D 模型檔案格式,如OBJ、GLB、IFC、OSGB等,使用者可以使用這些函數將不同格式的3D 模型資料匯入到GanosBase引擎中進行處理。

作為GanosBase時空引擎的一部分,GanosBase Utility可以與各引擎緊密整合。使用者可以使用GanosBase Utility將匯入的3D 模型資料直接應用於GanosBase時空引擎的情境中,進行進一步的建模、渲染、模擬等操作,這種無縫整合為使用者提供了一體化的解決方案,簡化了工作流程,提高了開發效率。

  • 在查詢編輯器中執行 SQL 陳述式 select name,st_affine(element,1,0,0,0,0,1,0,-1,0,0,0,0) from ifc_demo_ifc_elem where family ='IfcBuildingStorey',查詢結果返回 8 條建築樓層記錄(Level 1 至 Level 7 及 Level 7A),每條記錄包含樓層名稱和經 st_affine 空間變換後的三維網格資料。右側3D 模型瀏覽面板以半透明渲染方式展示匯入的 BIM 建築模型。

  • 匯入並查看OSGB資料,效果如下圖所示:

    image

  • 使用OSGB資料進行可視域分析,效果如下圖所示:

    image

主要業務情境

  • 多種檔案格式匯入匯出

    GanosBase Utility可以匯入、匯出和驗證多種常見的3D 模型檔案格式,如OBJ、GLB、IFC、OSGB等,這使得使用者可以靈活地處理和編輯各種類型的三維資料。

  • 資料管理和查看

    通過GanosBase Utility,使用者可以方便地管理和查看3D 模型資料。它提供了統一的工具,使使用者能夠快速匯入資料、進行編輯和轉換操作,以及匯出已編輯好的資料。這大大簡化了使用者的工作流程,提高了工作效率。

  • 資料驗證和校正

    GanosBase Utility提供了資料驗證和校正功能,確保匯入的3D 模型資料的有效性和完整性。使用者可以使用這些功能來檢查資料的格式、結構和一致性,以確保資料的品質,並及時發現和糾正資料錯誤。

基本構成

GanosBase Utility提供了一系列工具函數,包括sfmesh、scene模組的資料匯入、資料匯出、資料驗證功能。

資料匯入

  • IFC匯入

    IFC(Industry Foundation Classes)是一種開放的、面向行業的資料模型和檔案格式,用於描述和交換建築和基礎設施專案的資訊。IFC是由國際標準組織(ISO)制定的標準,旨在促進建築資訊模型(BIM)的協作和整合。

    IFC資料格式是一種基於對象的資料模型,用於表示建築和基礎設施專案中的各種構件、屬性和關係。它可以描述建築物的幾何形狀、結構、材料、屬性、關聯關係等多個方面的資訊。IFC資料格式不僅僅是幾何資料的表示,還包括了建築物的功能、構建過程、維護和操作等資訊。

  • OBJ匯入

    OBJ(Wavefront OBJ)是一種常見的3D 模型檔案格式,用於儲存和交換靜態3D 模型的幾何形狀和材質資訊。

    OBJ 資料格式由兩個檔案組成:.obj 檔案和.mtl 檔案。.obj檔案包含了模型的頂點、法向量、紋理座標和面資訊。它使用一系列關鍵字來描述模型的幾何屬性,如頂點座標(v)、法向量(vn)、紋理座標(vt)等。面資訊使用頂點索引來定義,以描述多邊形的串連關係。.mtl檔案包含了模型的材質屬性,如顏色、紋理和光照資訊。

  • GLB匯入

    GLB(GLTF Binary)是一種用於儲存和交換3D 模型的二進位檔案格式。GLBGLTF(GL Transmission Format)的一種擴充,它將模型的幾何形狀、材質、紋理、動畫和其他相關資料封裝在一個單一的二進位檔案中,以提供更高效的載入和傳輸效能。

    GLB資料格式使用了二進位編碼,相比於文字格式設定,它具有更小的檔案尺寸和更高的載入速度。這使得GLB檔案適用於線上3D 模型的傳輸和即時渲染,如虛擬現實(VR)、增強現實(AR)和WebGL應用。

  • OSGB匯入

    OSGB資料類型是一種用於儲存和載入3D情境的檔案格式。它是OpenSceneGraph(OSG)架構的一部分,用於描述和儲存3D 模型、紋理、材質等資訊。

    OSGB檔案是二進位格式的檔案,與其他常見的三維檔案格式(如OBJ、FBX)相比,OSGB檔案具有較小的檔案尺寸和較快的載入速度,使其成為處理大型情境的理想選擇。

資料匯出

3DTile匯出

3DTiles是一種用於儲存和交換大規模三維地理資料的開放標準格式。它旨在解決在Web平台上高效呈現和可視化大規模三維地理資料的挑戰,包括城市模型、地形、點雲等。

3DTiles提供了用於組織和渲染瓦片資料的層次化結構,以支援高效的地圖渲染和可視化。瓦片可以根據空間位置和層級進行分層組織,使得使用者可以根據需要逐級載入和顯示資料,從而實現對大規模地理資料的高效能瀏覽和互動。

資料驗證

OSGB驗證

OSGB檔案是OpenSceneGraph架構中使用的一種二進位檔案格式,用於儲存和載入3D情境資料。由於其二進位的特性,直接檢查資料的有效性可能比較困難,可以使用Utility函數來驗證OSGB檔案的有效性和完整性。

其他

更多內容請參見Utility SQL參考

快速入門

簡介

快速入門文檔協助使用者快速理解GanosBase Utility引擎的基本用法,包括建立擴充、匯入資料、匯出資料、資料驗證等內容。

文法說明

  • 建立擴充。

    CREATE EXTENSION IF NOT EXISTS ganos_utility CASCADE;
    說明
    • 建議將擴充安裝在public模式下,避免許可權問題。

      CREATE EXTENSION IF NOT EXISTS 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;

使用進階

GanosBase 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參考