このトピックでは、ST_As3dTiles関数について説明します。 この関数は、sfmeshオブジェクトを3Dタイル形式に変換し、変換したオブジェクトをデータベースに保存します。
構文
ブールST_As3dTiles(sfmesh sfmesh_object、cstring table_name、cstringオプションデフォルト '{}');戻り値
戻り値 | 説明 |
true | データが期待どおりにエクスポートされることを示します。 |
false | データがエクスポートされないことを示します。 |
Parameters
パラメーター | 説明 |
sfmesh_object | 変換するsfmeshオブジェクト。 |
table_name | <td class="en-UStry align-left colsep-1 rowsep-1">テーブル名。</td> |
options | 設定できるJSON文字列のオプション。 |
使用上の注意
この関数は、sfmeshオブジェクトを3Dタイル形式に変換し、変換したオブジェクトをデータベースに保存します。 ST_As3dTiles関数を使用してオブジェクトを変換する前に、ST_ImportIFC関数を使用してオブジェクトをインポートする必要があります。 ST_ImportIFC関数の詳細については、「ST_ImportIFC」をご参照ください。
次の表に、設定できるオプションを示します。
オプション | データ型 | 説明 | デフォルト値 | 例 |
schema | String | 必要なテーブルのスキーマ。 | パブリック | ガノス |
project | String | プロジェクト名。 この名前は、各レコードのproject_nameフィールド値として使用されます。 | - | project_1 |
parallel | Integer | 並列処理度 (DOP) 。 DOPを増やすと、データのインポートは高速化されますが、大量のメモリを消費する可能性があります。 実際のデータまたはデータベースの実行状態に基づいて適切な値を指定できます。 このオプションの最大値は16です。 | 1 | 16 |
size_threshold | Integer | 分割しきい値。 (単位:KB) サイズがこの閾値より大きい幾何学的オブジェクトは、各タイルがサイズがこの閾値より小さくなるまで分割される。 | 2048 | 4096 |
srid | Integer | 宛先sfmeshオブジェクトの空間参照識別子 (SRID) 。 ソースsfmeshオブジェクトのSRIDがターゲットsfmeshオブジェクトのSRIDと一致しない場合、エラーが報告されます。 このオプションを指定しない場合、ターゲットsfmeshオブジェクトにはSRIDがありません。 | - | 2326 |
method | String | 分割方法。 有効な値:
| oct | bsp |
filter_percent | 浮く | フィルタリング比。 有効値: | 0.1 | 0.01 |
tileset_prefix | String | 3Dタイルセットエンドポイントのプレフィックス。 | - | http:// your_server/foo/bar |
enable_tile_option | Boolean | sfmeshオブジェクトの組み込みタイル属性を有効にするかどうかを指定します。 | false | true |
merge_material | Boolean | ジオメトリを同じマテリアルとマージするかどうかを指定します。 このオプションがtrueに設定されている場合、ファイルボリュームが減少する可能性があります。 | true | false |
with_extension | Boolean | 生成されるTilesetファイルのB3DM /tilesetのURIにサフィックスを追加するかどうかを指定します。 このオプションをtrueに設定すると、URLにサフィックスが追加されます。 | false | true |
vertex_threshold | 浮く | 頂点マージしきい値。 このオプションを0に設定すると、頂点マージ操作は実行されません。 そうでなければ、各タイル内の頂点間隔が閾値未満である点がマージされる。 | 0.0001 | 0.01 |
update_normal | Boolean | 通常データを再計算するかどうかを指定します。 | false | true |
divide_factor | 浮く | geometricErrorの計算係数。 | 5 | 10 |
しきい値ベースの頂点マージを有効にすると、元の通常データが削除されます。 頂点のマージ後、新しくマージされたジオメトリが正確なシェーディング属性とライティング属性を維持するようにするには、
update_normalオプションを有効にして、正常なデータを再計算できます。しきい値ベースの頂点マージを有効にし、システムが通常のデータを再計算すると、頂点マージしきい値によって表示効果が異なる場合があります。
システムがそのようなデータを持たないオブジェクトの正常データを再計算すると、生成されるボリューム値は増加する。
非リーフノードに対して生成された
geometricErrorが大きすぎる場合は、divid_factorオプションを変更できます。 たとえば、divid_factorオプションの値を2倍にすることができます。 この場合、geometricErrorは半分に減少します。
プロジェクトがデータベースにインポートされると、データベースに次のテーブルが生成されます。
[table_name]: タイルメタデータを格納するプライマリテーブル。[table_name]_tile: プロジェクトのすべてのタイルデータを格納するタイルテーブル。[table_name]_tileset: プロジェクトに対応するtileset.jsonに関する詳細を格納するテーブル。
[table_name] テーブルの構造:
フィールド | データ型 | 説明 | 補足 |
project_id | uuid | プロジェクトID。 | プロジェクトIDが自動的に生成されます |
project_name | text | プロジェクト名。 | このフィールドを指定しない場合、プロジェクト名列にはデータが含まれません。 ほとんどの場合、テーブルは複数のサブプロジェクトのテーブルを格納するために使用されます。 |
srid | integer | このフィールドは空のままです。 | - |
アンカー | geometry | プロジェクトがアンカーされる3Dポイント。 | sfmeshプロジェクトの中心点投影は、WGS84座標系に変換される。 |
extent | geometry | このフィールドは空のままです。 | - |
aux | text | このフィールドは空のままです。 | - |
tiletable | varchar (64) | このフィールドは空のままです。 | - |
[table_name]_tileテーブルの構造:
フィールド | データ型 | 説明 | 補足 |
project_id | uuid | プロジェクトID。 | プロジェクトIDは [table_name] テーブルと同じです。 |
project_name | text | プロジェクト名。 | プロジェクト名は [table_name] テーブルと同じです。 |
uid | uuid | タイルID。 | タイルIDは自動的に生成されます。 |
lod | integer | このフィールドは空のままです。 | - |
親 | uuid | このフィールドは空のままです。 | - |
children | uuid[] | このフィールドは空のままです。 | - |
aux | jsonb | このフィールドは空のままです。 | - |
タイル | シーン | タイルのエンティティ。 | - |
[table_name]_tilesetテーブルの構造:
フィールド | データ型 | 説明 | 補足 |
project_id | uuid | プロジェクトID。 | プロジェクトIDは [table_name] テーブルと同じです。 |
project_name | text | プロジェクト名。 | プロジェクト名は [table_name] テーブルと同じです。 |
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