このトピックでは、表面メッシュモデルの詳細と使用方法について説明します。
概要
概要
表面メッシュモデリングは、隣接する表面のメッシュとして3Dオブジェクトを表すために使用される一般的な3Dモデリング技術です。 テクスチャとマテリアルをサーフェスに適用して、オブジェクトの3Dモデルの視覚的な詳細を強調できます。
標準SQLを使用して、サーフェスメッシュモデルのデータ型のデータを照会および操作できます。 データは、テキストおよびバイナリ形式で表現および交換できます。
GanosBase Sfmeshは、 PolarDB for PostgreSQL (Oracleと互換) の時空間拡張です。 ユーザーが3次元サーフェスデータを効率的に管理、取得、分析するのに役立つ一連のデータ型、関数、ストアドプロシージャを提供します。
機能
サーフェスメッシュモデルは、データの作成、アクセス、編集、処理、集計、インポート、エクスポートを行うための複数の組み込みデータ型と関数を提供し、3D空間関係、3D分析と計算、3Dインデックスの決定をサポートします。
GanosBase Utility拡張機能を使用すると、サーフェスメッシュモデルは、IFC、gITF、OBJなどの複数の形式の3Dデータのインポートをサポートします。 この拡張により、サーフェスメッシュモデルを3Dタイルに変換することもできます。
詳細については、「SfMesh SQLリファレンス」をご参照ください。
シナリオ
表面メッシュモデルは、空間データの視覚化および解析に使用することができます。
3Dマップとデータの視覚化
3Dマップは、地理空間データの分布、傾向、および関係を示し、データ内の意味やパターンを識別するのに役立ちます。 3D空間データの視覚化は、建物、パイプライン、およびケーブルなどの3次元オブジェクトを表すことができる。 素材やテクスチャなどの視覚的要素を追加することで、実際の状況を模倣して表示し、情報に基づいた意思決定を行うことができます。
3D空間クエリ
空間クエリは、空間データマイニングや都市計画などのシナリオで使用できます。 空間関係に基づいてデータをすばやくフィルタリングし、情報に基づいた決定を行うことができます。
サーフェスメッシュモデルは、交差および包含を含む空間関係に基づいて空間データをフィルタリングするための3D空間クエリをサポートします。 空間クエリを使用して、2つのオブジェクト間の関係 (交差するかどうかなど) を判断することもできます。
3D空間解析と計算
3D空間分析および計算は、建物の面積および体積を測定するなどの多様な測定活動において有用です。
サーフェスメッシュモデルは、面積、長さ、距離の計算、2つのオブジェクトの交差と結合など、さまざまな空間分析および計算タスクをサポートします。
次の例では、建物情報モデリング (BIM) シナリオで表面メッシュモデルを使用します。
例
BIMは、施設の物理的および機能的特性のデジタル表現を提供します。 BIMは、施設の設計、建設、および運用に使用されます。
BIMは、大量の3次元空間データとプロパティデータを生成します。これらは、データベースの中央ストレージ、管理、およびクエリに適しています。
GanosBase Utility拡張機能は、BIMプログラムによって生成されたIFC形式のモデルをインポートし、それをサーフェスメッシュモデルに変換することができます。
3Dビジュアライゼーション
2D図面と比較して、3Dモデルはリアリズムを高め、より直感的な方法で情報を提示し、施設内の空間的関係を鮮やかに示します。
BIMデータをサーフェスメッシュとして保存することで、視覚化技術を使用した3Dモデルの作成が可能になります。 これにより、BIMデータ、特に大きなBIMファイルの直感性が向上します。
属性クエリ
BIMデータは通常、特殊なファイル形式で保存されるため、他の2Dおよび3Dデータと一緒に一元管理または結合操作で使用することはできません。 ビジネスおよび空間クエリを容易にするには、BIM要素を構造化形式にセグメント化する必要があります。
データベースは、構造化された方法でBIMデータを保存し、属性と空間関係の両方を簡単に照会できるため、セグメント化されたBIMデータを管理するのに理想的です。
たとえば、標準SQLを使用して「システムパネル」タイプとして分類されたコンポーネントを照会できます。
SELECT project_uuid, project_name, parent_uuid, uuid, "family", "name", attrs, props_set
FROM ifc_demo_ifc_elem
WHERE
(((props_set->'Other')::json)->'Type')::text like '%System Panel: %'
空間分析
BIMモデルは、物理的な施設の寸法を正確に反映します。 したがって、BIMデータは、床面積比および建物被覆率の計算、正味の床と床の高さおよび床面積の検証、他の2Dおよび3Dデータセットからの空間オブジェクトとの設計衝突の検出など、さまざまな分析タスクに使用できます。
コンポーネント
表面メッシュモデルとは
ソリッドモデリングおよびコンピューター支援設計では、ソリッドオブジェクトは通常、内部空間と外部空間の境界を定義する一連の接続されたサーフェス要素として表されます。
これらのサーフェスは、三角形、四角形、または他のポリゴンで構成されることが多く、これらを組み合わせると、ソリッドオブジェクトの形状を正確に表します。
これらの接続面を使用して構築されたソリッドオブジェクトは、表面メッシュモデルです。
空間参照システム
空間参照システム (SRS) は、Sfmeshオブジェクトを地球の表面上の特定の場所に関連付ける方法を定義します。
GanosBaseはSRIDを使用して、SfmeshオブジェクトをそれぞれのSRS定義にリンクします。
詳細については、「空間リファレンス」をご参照ください。
データモデル
GanosBaseのサーフェスメッシュモデルは、OGCのSimple Feature Modeに加えて、次の3つの新しいデータモデルを提供します。
INDEXSURFACE
IndexSurfaceは、インデックス付きの多面体を記述するために使用されます。 例えば、以下の多面体は、頂点列 (p1, p2, p3, p4, p5) 、または (p1, p2, p3) 、(p2, p3, p4) 、(p4, p5, p3) などの頂点定義面で表すことができます。
トライアングルストリップ
TriangleStripは、隣接する点を持つ多面体を記述するために使用されます。 例えば、以下の多面体は、頂点列 (p1, p2, p3, p4, p5) または頂点を定義する三角形面 (p1, p2, p3) 、(p2, p3, p4) 、(p3, p4, p5) で表すことができます。
トライアングルファン
三角形ファンは、隣接する点を共通の中心点に接続することによって多面体を記述するために使用されます。 例えば、以下の多面体は、頂点列 (p3, p1, p2, p4, p5) または頂点を定義する三角形面 (p3, p1, p2) 、(p3, p2, p4) 、(p3, p4, p5) で表すことができます。
データ型
GanosBaseのサーフェスメッシュモデルでは、次のデータ型があります。
sfmesh: データ型のコレクション。 ジオメトリ、マテリアル、テクスチャ、テクスチャcoordiantesに関する情報が含まれています。
meshgeom: 幾何学的オブジェクト。 座標、形状記述、テクスチャ座標、法線ベクトルを記録するために使用されます。
texture: 幅、高さ、圧縮方法、およびバイナリテクスチャデータを含むテクスチャマッピング情報。
material: 色、テクスチャ、滑らかさ、透明度、反射率、屈折率、光度など、sfmeshオブジェクトの表面上の視覚的属性のコレクション。
サーフェスメッシュモデルは、参照型もサポートします。参照型は、データを含まず、別のデータオブジェクトのみを指す特殊なデータ型です。
交換形式
サーフェスメッシュモデルでは、2つの交換形式がサポートされています。
よく知られているテキスト (WKT): 読みやすいテキスト形式詳細については、「WKT」をご参照ください。
よく知られているバイナリ (WKB): ポータブルで精度を維持するバイナリ形式詳細については、「WKB」をご参照ください。
データ列ビュー
GanosBaseでは、sfmesh_columnsビューにサーフェスメッシュモデルに関連するすべての列が含まれ、データベースシステムのカタログテーブルからこの情報が得られます。 これは、OGCのSQL用のシンプルな機能仕様に従いながら、追加の拡張機能も組み込まれています。
ビューの構造は次のとおりです。
列 | タイプ | 説明 |
g_table_catalog | varchar(256) | データベースの名前。 |
g_table_schema | name | テーブルが属するスキーマ。 |
g_table_name | name | テーブルの名前。 |
g_sfmesh_column | name | 列の名前。 |
g_sfmesh_type | name | sfmesh列のサブタイプ。 有効な値:
|
現在のデータベースのサーフェスメッシュモデルのすべての列を照会します。
SELECT * FROM sfmesh_columns;
フィルター列:
SELECT * FROM sfmesh_columns
WHERE g_sfmesh_type = 'sfmesh';
インデックス
空間インデックスは、データベース全体のシーケンシャルスキャンを必要とせずに、大きな空間データセットを照会する効率を大幅に向上させます。 これは、空間データを検索ツリーに編成することによって達成され、これによりレコードの迅速な走査および検索が可能になります。
GanosBaseは、GiSTベースの3次元空間インデックスをSfmeshに提供します。
次のように空間インデックスを作成します。
CREATE INDEX <index_name>
ON <table_name>
USING GIST(<column_name>);
クイックスタート
概要
このセクションでは、拡張機能のインストール、テーブルとインデックスの作成、データ挿入、データクエリ、空間クエリなど、ganos_sfmesh拡張機能を使用する基本について説明します。
構文
ganos_sfmesh拡張機能をインストールします。
CREATE EXTENSION ganos_sfmesh CASCADE;
説明パブリックスキーマに拡張機能をインストールして、潜在的なアクセス許可の問題を回避します。
CREATE extension ganos_sfmesh WITH schema public cascade CASCADE;
sfmesh型の列を持つテーブルを作成します。
CREATE TABLE t_mesh( id integer, mesh sfmesh );
データの挿入:
-- Insert data into the table INSERT INTO t_mesh(id, mesh) VALUES (1, '{ "version" : 1, "srid" : 4326, "root" : 0 , "meshgeoms" : [ "MESHGEOM(PATCH(TRIANGLESTRIP(0 0 0 ,0 10 10,10 10 10,10 0 0)))" ], "primitives" : [ {"meshgeom": 0}], "nodes" : [ {"primitive" : 0} ] }'::sfmesh), (2, '{ "version" : 1, "srid" : 4326, "root" : 0 , "meshgeoms" : [ "MESHGEOM(PATCH(INDEXSURFACE(VERTEX(0 0 1,0 10 2,10 10 3,10 0 4), INDEX((0,1,2),(1,2,3)))))" ], "primitives" : [ {"meshgeom": 0}], "nodes" : [ {"primitive" : 0} ] }'::sfmesh);
クエリを実行する:
SELECT id, ST_AsText(mesh) FROM t_mesh; ------------------------- 1 | {"version" : 1, "srid" : 4326, "root" : 0, "meshgeoms" : ["MESHGEOM(PATCH(TRIANGLESTRIP(0 0 0,0 10 10,10 10 10,10 0 0)))"], "primitives" : [{"meshgeom" : 0}], "nodes" : [{"primitive" : 0}]} 2 | {"version" : 1, "srid" : 4326, "root" : 0, "meshgeoms" : ["MESHGEOM(PATCH(INDEXSURFACE Z (VERTEX(0 0 1,0 10 2,10 10 3,10 0 4),INDEX((0,1,2),(1,2,3)))))"], "primitives" : [{"meshgeom" : 0}], "nodes" : [{"pr imitive" : 0}]}
インデックスを作成する:
CREATE INDEX idx_t_mesh ON t_mesh USING GIST(mesh);
空間クエリを実行する:
-- Query data that intersects with a specified 3D object SELECT id FROM t_mesh WHERE ST_3DIntersects(mesh, ST_SetSRID('BOX3D(0 0 0, 10 10 10)'::box3d::sfmesh, 4326));
(オプション) 拡張子をドロップする:
DROP EXTENSION ganos_sfmesh CASCADE;
SQL文
詳細については、「SfMesh SQLリファレンス」をご参照ください。