このトピックでは、ST_As3DGrid関数について説明します。 この関数は、3Dジオメトリを地理グリッドに変換します。
構文
geomgrid[] ST_As3DGrid(geometry geom3d, integer precision, bool degenerated default false);
geomgrid[] ST_As3DGrid(meshgeom geom3d、整数精度、bool縮退デフォルトfalse);
geomgrid[] ST_As3DGrid(sfmesh geom3d、整数精度、bool縮退デフォルトfalse);
geomgrid[] ST_As3DGrid(vomesh geom3d、整数精度、bool縮退デフォルトfalse);
パラメーター
パラメーター | 説明 |
geom3d | 地理グリッドを計算するジオメトリ。 |
精度 | 地理的グリッドの精度レベル。 有効な値: 1 ~ 32。 |
退化 | 縮退グリッドを使用するかどうかを指定します。 |
説明
ジオメトリはCGC2000空間参照システムを使用する必要があります。 さらに、ジオメトリの空間参照システム識別子 (SRID) を4490する必要があります。 ジオメトリがCGC2000空間参照システムを使用しない場合は、ジオメトリの座標をCGC2000座標に変換できることを確認してください。
ジオメトリと交差する地理グリッドの配列が返されます。 以下の図は一例です。
例
SELECT ST_AsText(ST_As3DGrid) (
'srid=4490;LINESTRING Z (116 39 2000,116.012 39.009 3000)'::geometry, 10);
st_astext
-------------------------------------------------------
{GZ0026204626、GZ0026204662、GZ0026206404、GZ0026206440}
SELECT ST_AsText(ST_As3DGrid(st_meshgeomfromtext('srid=4490;SOLID=TRUE;MESHGEOM(PATCH(INDEXSURFACE Z (VERTEX(115.966 38.9757000000001 3000)))) 、116 38.9757000000001 3000,116 38.9999999999999 3000,115.966 38.9999999999999 3000,116 38.9999999999999 0、116 38.9757000000001 0,115.966 38.9757000000001 0,115.966 38.9999999999999 0) 、INDEX((0,1,2) 、(2,3,0) 、(4,5,6) 、(6,7,4) 、(3,7,6) 、(6,0,3) 、(0,6,5) 、(5,1,0) 、(1,5,4) 、(4,2,1) 、(2,4,7) 、(7,3,2)))))')') 。10);
st_astext
-------------------------------------------------------
{GZ0026204626、GZ0026206404、GZ4026204626、GZ4026206404}
SELECT ST_AsText(ST_As3DGrid(st_meshfromtext) (
'{"version" : 1, "srid" : 4490, "root" : 0,
"meshgeoms" : ["MESHGEOM(PATCH(POLYGON Z ((0 0 0,1 0 0,1 1 0,0 1 0,0 0 0)))))"] 、
"primitives" : [{"meshgeom" : 0}] 、"nodes" : [{"primitive" : 0,"matrix" : [0.012,0,0,116,0,0.009,0,39,0,0,1000,0,0,0,0,1]}]}');
st_astext
-----------------------------------------------
{GZ00262046、GZ00262064、GZ40262046、GZ40262064}
SELECT ST_AsText(ST_As3DGrid(ST_VOMeshFromText) (
'SRID=4490;LOD=2;VOMESH(VERTEX (116.012 39 0,116 39.009 0,115.988 39 0,116 38.991 0,116 39 1000)) 、FACE (インデックス ((0,1、2,3) 、(1,0、4) 、(2,1、4) 、(3,2、4) 、(0,3、4))) 、
CELL(INDEX((0,1,2,3,4)),DIRECTION((0,1,1,1,0)))'),15, true);
st_astext
---------------------------------------------------------------------------------------
------------------------------------------------------------
GZ002620462666066,GZ002620466222022,GZ002620640444044,GZ002620644000000, GZ40262046262666066,
GZ402620466222022、GZ402620640444044、GZ402620644000000}