All Products
Search
Document Center

PolarDB:ST_3DContains

Last Updated:Mar 28, 2026

Returns true if the spatial range of a 3D geographic grid fully contains a geometry, or if one grid fully contains another grid. Returns false otherwise.

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

ParameterDescription
gridcode / gridcode1 / gridcode2The geographic grid object.
geom3dThe 3D geometry. Supported types: geometry, meshgeom, sfmesh, vomesh.

Description

ST_3DContains returns true when every point of the second argument lies within the spatial range of the first argument, and false when any point falls outside that range.

All geometry inputs must use the CGC2000 spatial reference system. The spatial reference system identifier (SRID) of the geometry must be 4490.

Examples

All examples use ST_GridFromText to construct a geomgrid from a grid code string.

Grid contains a point

The 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
---------------
 t

Grid does not fully contain a meshgeom solid

The grid GZ0026 does not fully contain the meshgeom solid — part of the solid lies outside the grid boundary — 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
---------------
 f

sfmesh does not fully intersect with a grid (JSON format)

The sfmesh is not fully contained within the grid GZ00262064 — the mesh extends beyond the grid boundary — 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
---------------
 f

vomesh is not fully contained within a grid

The vomesh is not fully contained within the grid GZ00262064 — part of the volume lies outside the grid boundary — 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
---------------
 f

Grid contains a child grid

The grid GZ00262064 fully contains GZ002620643 because GZ002620643 is a subdivision (child cell) of GZ00262064, so the function returns t.

SELECT ST_3DContains(
  ST_GridFromText('GZ00262064'),
  ST_GridFromText('GZ002620643')
);
 st_3dcontains
---------------
 t