将基于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