GanosBaseサーフェスモデルは、読みやすく理解しやすいテキスト形式であるWell-Known Text (WKT) 形式で表すことができます。
幾何学的構造
GanosBaseサーフェスモデルは、Open Geospatial Consortium (OGC) Simple Featureモデルで定義されている基本タイプに加えて、次の幾何学的構造もサポートしています。 これらの幾何学的構造は、WKTフォーマットで表すこともできる。 ジオメトリ構造の詳細については、「サーフェスメッシュモデルのデータモデル」をご参照ください。
IndexSurface
IndexSurface幾何構造は、INDEXSURFACEキーワード、VERTEXキーワード、およびINDEXキーワードを使用してWKTで構築されます。 頂点座標はコンマ (,) で区切り、次元はスペース ( ) で区切ります。 各面のインデックスは括弧 () で囲まれ、各インデックスはコンマ (,) で区切られています。 形式:
INDEXSURFACE(
VERTEX(x1 y1 z1,
x2 y2 z2,
...
),
INDEX(
(i1,i2,i3,...),
(j1,j2,j3,...),
....
)
)例:
INDEXSURFACE(
VERTEX(201755.424609375 241700.688720703 7025.00027160645,201755.424609375 241700.688720703 6774.9998336792,202255.431298828 241700.688720703 6774.9998336792,202255.431298828 241700.688720703 7025.00027160645,202255.431298828 243149.418896484 6774.9998336792,201755.424609375 243149.418896484 6774.9998336792,201755.424609375 243149.418896484 7025.00027160645,202255.431298828 243149.418896484 7025.00027160645),
INDEX((0,1,2),(2,3,0),(4,5,6),(6,7,4),(2,1,5),(5,4,2),(3,2,7),(4,7,2),(0,3,7),(7,6,0),(1,0,5),(6,5,0))
)IndexSurface幾何学的構造は、ZおよびM次元情報もサポートする。
INDEXSURFACE Z(
VERTEX(201755.424609375 241700.688720703 7025.00027160645,201755.424609375 241700.688720703 6774.9998336792, 202255.431298828 241700.688720703 6774.9998336792,202255.431298828 241700.688720703 7025.00027160645,202255.431298828 243149.418896484 6774.9998336792,201755.424609375 243149.418896484 6774.9998336792,201755.424609375 243149.418896484 7025.00027160645,202255.431298828 243149.418896484 7025.00027160645),
INDEX((0,1,2),(2,3,0),(4,5,6),(6,7,4),(2,1,5),(5,4,2),(3,2,7),(4,7,2),(0,3,7),(7,6,0),(1,0,5),(6,5,0)))
INDEXSURFACE M(
VERTEX(201755.424609375 241700.688720703 7025.00027160645,201755.424609375 241700.688720703 6774.9998336792, 202255.431298828 241700.688720703 6774.9998336792,202255.431298828 241700.688720703 7025.00027160645,202255.431298828 243149.418896484 6774.9998336792,201755.424609375 243149.418896484 6774.9998336792,201755.424609375 243149.418896484 7025.00027160645,202255.431298828 243149.418896484 7025.00027160645),
INDEX((0,1,2),(2,3,0),(4,5,6),(6,7,4),(2,1,5),(5,4,2),(3,2,7),(4,7,2),(0,3,7),(7,6,0),(1,0,5),(6,5,0)))TriangleStrip
TriangleStrip幾何構造は、INDEXSURFACEキーワードの後にすべての座標文字列を使用してWKTで構築されます。 例:
TRIANGLESTRIP(0 0 1 1,0 10 2 2,10 10 3 3,10 0 4 4)TriangleStrip幾何学的構造は、ZおよびM次元情報もサポートする。
TRIANGLESTRIP Z(0 0 1,0 10 2,10 10 3,10 0 4)
TRIANGLESTRIP M(0 0 1,0 10 2,10 10 3,10 0 4)
TRIANGLESTRIP ZM(0 0 1 1,0 10 2 2,10 10 3 3,10 0 4 4)TriangleFan
TriangleFan幾何構造は、TRIANGLEFANキーワードとそれに続くすべての座標文字列を使用してWKTで構築されます。 例:
TRIANGLEFAN(0 0 1 1,0 10 2 2,10 10 3 3,10 0 4 4)TriangleFan幾何学的構造は、ZおよびM次元情報もサポートする。
TRIANGLEFAN Z(0 0 1,0 10 2,10 10 3,10 0 4)
TRIANGLEFAN M(0 0 1,0 10 2,10 10 3,10 0 4)
TRIANGLEFAN ZM(0 0 1 1,0 10 2 2,10 10 3 3,10 0 4 4)MeshGeom
MeshGeom幾何構造は、メインキーワードMESHGEOMとキーワードPATCH、NORMAL、およびTEXCOORDを使用してWKTで構築されます。
パッチ
ジオメトリタイプと座標情報を定義します。 キーワードには、コンマ
(,)で区切られた1つ以上のサブオブジェクトを含めることができます。 サポートされる幾何学的タイプは次のとおりです。Point、LineString、Polygon、MultiLineString、MultiPolygon、IndexSurface、TriangleStrip、およびTriangleFan。
例:
PATCH(POINT(0 0 1)) PATCH( POINT(0 0 1), TRIANGLESTRIP(0 0 1,0 10 2,10 10 3,10 0 4) )NORMAL
3次元点座標として表される法線ベクトルを定義する。 座標文字列はコンマ
(,)で区切ります。 各サブオブジェクトは、括弧()で囲まれている。 法線ベクトル点の数は、対応するPatchサブオブジェクトの頂点の数と一致する必要があります。例:
NORMAL( (0 0 0, 1 1 1,2 2 2, 3 3 3) ) NORMAL( (0 0 0, 1 1 1,2 2 2, 3 3 3), (1 2 1, 3 3 4) )TEXCOORD
2次元ポイント座標として表されるテクスチャ座標を定義します。 座標文字列はコンマ
(,)で区切ります。 各サブオブジェクトは、括弧()で囲まれている。 テクスチャ座標点の数は、対応するPatchサブオブジェクトの頂点の数と一致する必要があります。例:
TEXCOORD( (0 0, 1 1, 2 2, 3 3) ) TEXCOORD( (0 0, 1 1, 2 2, 3 3), (1 1, 0 0, 2 2, 3 3) )
例
次の例では、WKTでMeshGeomジオメトリ構造をどのように表現するかを説明します。
2つのPATCHキーワード
MESHGEOM( PATCH( POINT(0 0 1), INDEXSURFACE(VERTEX(0 0 1,0 10 2,10 10 3,10 0 4), INDEX((0,1,2),(1,2,3))) ) )NORMALおよびTEXCOORDキーワード
MESHGEOM( PATCH( TRIANGLESTRIP(0 0 1,0 10 2,10 10 3,10 0 4) ), NORMAL( (0 0 0, 1 1 1,2 2 2, 3 3 3) ), TEXCOORD( (0 0, 1 1, 2 2, 3 3) ) )MeshGeom幾何学的構造は、ZおよびM次元情報もサポートする。 MeshGeomジオメトリ構造のすべてのパッチの寸法は同じでなければなりません。
MESHGEOM( PATCH( POINT M(0 0 1), INDEXSURFACE M( VERTEX(0 0 1,0 10 2,10 10 3,10 0 4), INDEX((0,1,2),(1,2,3)) ) ) )
オブジェクトの参照
MeshGeomジオメトリック構造は、スキーマ、テーブル、列、およびキーのキーワードを使用して、WKT形式の他のMeshGeomオブジェクトを参照できます。 最後の3つのキーワード (テーブル、列、キー) は必須です。 参照の詳細は @ 記号で囲まれています。 形式:
MESHGEOM(
schema(@schema_name@),
table(@table_name@),
column(@column_name@),
key(@where_clause@)
)例:
MESHGEOM(
schema(@public@),
table(@mytable@),
column(@mycolumn@),
key(@id=1@)
)SFmesh
SFmesh幾何構造は、WKT表現方法としてJSONを使用し、次のノード情報を含みます。
version: SFmeshバージョン。 有効値: 1。
srid: 空間参照システム識別子 (SRID) 。
lod: 詳細レベル (LOD) 。
root: ルートノードID。 デフォルト値:0
meshgeoms: 参照されるMeshGeomオブジェクトの配列。 配列内の各エントリは、MeshGeom WKT形式を使用する外部参照を表すことができます。
mesh: 参照されるSFmeshオブジェクトの配列。 これらは外部参照であり、SFmesh WKTフォーマットに準拠できます。
テクスチャ: メッシュで使用されるテクスチャオブジェクトの配列。
materials: メッシュの表面特性を定義するために使用される材料オブジェクトの配列。
プリミティブ: プリミティブ要素を表すタプルの配列。 要素タイプはmeshgeomまたはmeshです。 メッシュタイプは、素材キーワードを用いて定義される素材情報を含むことができる。
nodes: メッシュコンポーネントの階層構造を定義します。 ノードは次の属性を持つことができます。
primitive: プリミティブ情報。
children: 子オブジェクトの配列。
id: この構造内のノードのID。
matrix: 変換行列。次の形式で説明されます。
/ a b c xoff \ | d e f yoff | | g h i zoff | \ 0 0 0 1 /
例
次のサンプルコードは、SFmeshオブジェクトの一般的なJSON表現の例を示しています。
{
"version": 1,
"root": 0,
"meshgeoms": ["MESHGEOM(PATCH(TRIANGLESTRIP(0 0,0 10,10 10,10 0)))"],
"meshes": [
"MESH(schema(@public@), table(@t_mesh@), column(@the_mesh@), key(@num=1@))"
],
"primitives": [
{
"mesh": 0
},
{
"meshgeom": 0
}
],
"nodes": [
{
"children": [1, 2],
"id": 100
},
{
"primitive": 0
},
{
"primitive": 1,
"matrix": [2, 0, 0, 1, 0, 2, 0, 3, 0, 0, 2, 4, 0, 0, 0, 1],
"id": 10
}
],
"materials": [
{
"type": "db",
"attributes": {
"schema": "public",
"table": "t_material",
"column": "the_material",
"key": "num=1"
}
}
],
"textures": [
{
"compressionType": "None",
"format": "JPEG",
"wrap": "Wrap",
"type": "Url",
"depth": 3,
"width": 256,
"height": 256,
"size": 15,
"data": "http://aaa.png"
}
]
}オブジェクトの参照
SFmesh幾何構造は、スキーマ、テーブル、列、およびキーのキーワードを使用して、他のSFmeshオブジェクトを参照できます。 最後の3つのキーワード (テーブル、列、キー) は必須です。 参照の詳細は @ 記号で囲まれています。 形式:
MESH(
schema(@schema_name@),
table(@table_name@),
column(@column_name@),
key(@where_clause@)
)例:
MESH(
schema(@public@),
table(@mytable@),
column(@mycolumn@),
key(@id=1@)
)EWKT
拡張既知テキスト (EWKT) は、空間参照システム識別子 (SRID) やSOLIDパラメータなどの追加情報を含むWKTの拡張バージョンです。 情報の各セクションはセミコロン (;) で区切られています。
SRIDの詳細については、「空間参照システム」をご参照ください。
SOLIDパラメータは、ジオメトリが満たされるかどうかを指定します。有効な値:
true
false (デフォルト)
例:
SRID=4326;MESHGEOM(PATCH(INDEXSURFACE M(VERTEX(0 0 1,0 10 2,10 10 3,10 04), INDEX((0,1,2),(1,2,3)))))
SRID=4326;SOLID=true;MESHGEOM(PATCH(INDEXSURFACE M(VERTEX(0 0 1,0 10 2,1010 3,10 0 4), INDEX((0,1,2),(1,2,3)))))