Returns true if a geographic grid (geomgrid) fully contains a 3D geometry, or if one grid fully contains another grid.
Syntax
bool ST_3DContains(geometry geom3d, geomgrid gridcode);
bool ST_3DContains(geomgrid gridcode, geometry geom3d);
bool ST_3DContains(meshgeom geom3d, geomgrid gridcode);
bool ST_3DContains(geomgrid gridcode, meshgeom geom3d);
bool ST_3DContains(sfmesh geom3d, geomgrid gridcode);
bool ST_3DContains(geomgrid gridcode, sfmesh geom3d);
bool ST_3DContains(vomesh geom3d, geomgrid gridcode);
bool ST_3DContains(geomgrid gridcode, vomesh geom3d);
bool ST_3DContains(geomgrid gridcode1, geomgrid gridcode2);Parameters
| Parameter | Description |
|---|---|
gridcode / gridcode1 / gridcode2 | The geographic grid object. |
geom3d | The 3D geometry. |
Description
ST_3DContains returns the spatial relationship between a grid and a geometry.
The 3D geometry must use the CGC2000 (China Geodetic Coordinate System 2000) spatial reference system with a Spatial Reference System Identifier (SRID) of 4490.
Examples
The following examples cover all supported argument type combinations.
Geomgrid contains a geometry point
Grid GZ00262064446046072072 fully contains the specified 3D point, so the function returns t.
SELECT ST_3DContains(
ST_GridFromText('GZ00262064446046072072'),
'srid=4490;POINT(116.31522216796875 39.910277777777778 1001.8)'::geometry
); st_3dcontains
---------------
tGeomgrid contains a meshgeom
The meshgeom solid extends beyond the bounds of grid GZ0026, so the function returns f.
SELECT ST_3DContains(
ST_GridFromText('GZ0026'),
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)))))'))
); st_3dcontains
---------------
fGeomgrid contains an sfmesh
The sfmesh (JSON format) is not fully contained within grid GZ00262064, so the function returns f.
SELECT ST_3DContains(
ST_GridFromText('GZ00262064'),
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_3dcontains
---------------
fGeomgrid contains a vomesh
The vomesh is not fully contained within grid GZ00262064, so the function returns f.
SELECT ST_3DContains(
ST_VOMeshFromText(
'SRID=4490;LOD=2;VOMESH(VERTEX(COORDS(116.012 39 0,116 39.009 0,115.988 39 0,116 38.991 0,116 39 1000)),
FACE(INDEX((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))))'
),
ST_gridfromtext('GZ00262064')
); st_3dcontains
---------------
fGeomgrid contains another geomgrid
Grid GZ00262064 is a coarser-level grid that fully contains the finer-level grid GZ002620643, so the function returns t.
SELECT ST_3DContains(
ST_GridFromText('GZ00262064'),
ST_GridFromText('GZ002620643')
); st_3dcontains
---------------
tWhat's next
ST_GridFromText— construct a geomgrid from a grid code stringST_MeshGeomFromText— construct a meshgeom from WKTST_VOMeshFromText— construct a vomesh from WKTST_3DIntersects— check whether two 3D geometries or grids intersect