將基於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 | bsp |
filter_percent | 浮點 | 篩選比例。範圍為 | 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]_tileset:tileset.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 |
| 若為專案根節點,則與project_id一致。 |
tileset | jsonb |
| - |
樣本
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