工具集
本文介紹了工具集的用途、基本構成和快速入門等內容。
工具用途
簡介
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資料,效果如下圖所示:

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

主要業務情境
-
多種檔案格式匯入匯出
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 模型的二進位檔案格式。GLB是GLTF(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)說明-
<ak>、<ak_secret>替換為實際access key和access secret。
-
資料匯出。
-- 將 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參考。