全部產品
Search
文件中心

PolarDB:ST_As3dTiles

更新時間:Jul 06, 2024

將基於sfmesh對象轉換為3dtiles瓦片格式並儲存到資料庫中。

文法

boolean ST_As3dTiles(sfmesh sfmesh_object,  cstring table_name,  cstring options default '{}');

傳回值

傳回值

描述

true

匯出成功。

false

匯出失敗。

參數

參數名稱

描述

sfmesh_object

需要處理的sfmesh對象。

table_name

業務表名稱。

options

JSON字串描述處理配置參數。

描述

將基於sfmesh對象轉換為3dtiles瓦片格式並儲存到資料庫中。sfmesh對象需要預先通過ST_ImportIFC進行匯入。

處理選項說明如下:

參數名稱

類型

說明

預設值

樣本

schema

字串

目標表schema。

public

ganos

project

字串

專案名稱。將填充在每一條記錄的project_name欄位。

-

project_1

parallel

整數

並行度。提高並行度將會加速匯入,但可能消耗一定記憶體,可根據實際的資料或資料庫運行狀態選擇合適的值。一般小於16。

1

16

size_threshold

整數

切分閾值,單位為KB。大於該體積的幾何對象將被切分到每個瓦塊都小於該閾值為止。

2048

4096

srid

整數

目標資料的SRID。若SFMesh同時具有SRID且兩者不一致,會報錯。若不指定,則視為無SRID。

-

2326

method

字串

切分方法。範圍為[oct, quad, bsp]。請根據實際情況選擇。

各取值的含義:

  • oct:八叉樹

  • quad:四叉樹

  • bsp:BSP樹

oct

bsp

filter_percent

浮點

篩選比例。範圍為(0,1)。若篩選比例為10%(即0.1),將對於每個非分葉節點瓦塊排除體積小於瓦塊體積10%的對象。

0.1

0.01

tileset_prefix

字串

3dtiles地址首碼。

-

http://your_server/foo/bar

enable_tile_option

布爾

是否啟用sfmesh內建瓦片屬性。

false

true

merge_material

布爾

是否融合約材質幾何,開啟後可能減小檔案體積。

true

false

with_extension

布爾

若開啟則會為產生的tileset檔案中B3DM/Tileset的URI賦予尾碼名。

false

true

vertex_threshold

浮點

頂點合并閾值。若為0,則不執行頂點合并;若不為0,將合并每個瓦塊中頂點間距小於閾值的點。

0.0001

0.01

update_normal

布爾

是否重演算法線資料。

false

true

divide_factor

浮點

geometricError計算因子。

5

10

  • 若開啟頂點閾值合并,將移除原有法線資料,若有需求,可以開啟update_normal項重新計演算法線。

  • 開啟頂點閾值合并同時重新計演算法線後,顯示效果可能隨著閾值的不同而不同。

  • 對於本身沒有法線的資料重新計演算法線,成果體積將會增大。

  • 若覺得產生的非葉子節點的geometricError產生的過大,可以調整divide_factor。例如:divide_factor增大一倍,geometricError將變小一倍。

匯入成功後會在資料庫內產生以下三張表:

  • [table_name]:主表,儲存瓦片的中繼資料資訊。

  • [table_name]_tile:瓦片表,儲存該專案所有的瓦片資料。

  • [table_name]_tilesettileset.json表,儲存該專案對應的tileset.json資訊。

[table_name]表結構如下:

欄位

類型

說明

備忘

project_id

uuid

專案ID。

自動產生。

project_name

text

專案名稱。

若使用者不指定project_name,則該列值為空白。常用於儲存多個子專案的表。

srid

integer

留空。

-

anchor

geometry

專案錨定的三維點位。

為該SFMesh中心點投影變換到WGS 84座標系下。

extent

geometry

留空。

-

aux

text

留空。

-

tiletable

varchar(64)

留空。

-

[table_name]_tile表結構如下:

欄位

類型

說明

備忘

project_id

uuid

專案ID。

與主表一致。

project_name

text

專案名稱。

與主表一致。

uid

uuid

瓦片ID。

自動產生。

lod

integer

留空。

-

parent

uuid

留空。

-

children

uuid[]

留空。

-

aux

jsonb

留空。

-

tile

scene

瓦片實體。

-

[table_name]_tileset表結構如下:

欄位

類型

說明

備忘

project_id

uuid

專案ID。

與主表一致。

project_name

text

專案名稱。

與主表一致。

uid

uuid

tileset.json的ID。

若為專案根節點,則與project_id一致。

tileset

jsonb

tileset.json實體。

-

樣本

SELECT ST_As3dTiles(sfmesh_obj, 'test_table') 
FROM t_sfmesh
WHERE id = 1;

---------
t

並行

SELECT ST_As3dTiles(sfmesh_obj, 'test_table', '{"parallel": 2}') 
FROM t_sfmesh
WHERE id = 1;

---------
t

更多參數選項

SELECT ST_As3dTiles(sfmesh_obj, 'test_table', '{"project":"test_proj", "method":"oct", "size_threshold":20}') 
FROM t_sfmesh
WHERE id = 1;

---------
t