操作符

本文将介绍GeomGrid SQL所支持的操作符,包括操作符的使用语法、参数以及相关的简单示例。

支持的操作符

操作符

说明

@>

查询网格对象代表的空间范围是否包含几何对象。

<@

查询网格对象代表的空间范围是否被几何对象包含。

&&&

查询地理网格对象代表的空间范围和几何对象是否相交。

@@>

查询地理网格对象代表的空间范围和几何对象是否包含。

<@@

查询地理网格对象代表的空间范围和几何对象是否被包含。

&&

判断两个GeomGrid/Geometry对象或两个H3Grid/Geometry对象的外包框的空间相交关系。

~

判断两个GeomGrid/Geometry对象或两个H3Grid/Geometry对象的外包框的空间包含关系。

@

判断两个GeomGrid/Geometry对象或两个H3Grid/Geometry对象的外包框的空间包含关系。

具体的语法以及使用示例如下所示:

@>

查询网格对象代表的空间范围是否包含几何对象。

语法

boolean @>(geomgrid grid, geometry geom);
boolean @>(geometry geom, geomgrid grid);
boolean @>(geomgrid grid1, geomgrid grid2);

参数

参数名称

描述

grid

网格对象。

geom

几何对象。

注意事项

几何对象空间参考必须是CGC2000(SRID=4490)。

示例

  • 示例一:

    SELECT ST_gridfromtext('G001331032213300013') @>
           ST_geomfromtext('POINT(116.31522216796875 39.910277777777778)',4490) AS t;

    返回值:

     t
    ---------------
     f
  • 示例二:

    SELECT ST_gridfromtext('G00133103221330') @>
           ST_gridfromtext('G001331032213300013') AS t;

    返回值:

     t 
    -------------
     t

<@

查询网格对象代表的空间范围是否被几何对象包含。

语法

boolean <@(geomgrid grid, geometry geom);
boolean <@(geometry geom, geomgrid grid);
boolean <@(geomgrid grid1, geomgrid grid2);

参数

参数名称

描述

grid

网格对象。

geom

几何对象。

注意事项

几何对象空间参考必须是CGC2000(SRID=4490)。

示例

  • 示例一:

    SELECT ST_geomfromtext('POINT(116.31522216796875 39.910277777777778)',4490) <@
           ST_gridfromtext('G001331032213300013') AS t;

    返回值

     t 
    ---------------
     f
  • 示例二:

    SELECT ST_gridfromtext('G001331032213300013') <@
            ST_gridfromtext('G001331032213300') AS t;

    返回值:

     t 
    -------------
     t

&&&

查询地理网格对象代表的空间范围和几何对象是否相交。

语法

bool &&&(geometry geom3d, geomgrid gridcode);
bool &&&(geomgrid gridcode, geometry geom3d);
bool &&&(meshgeom geom3d, geomgrid gridcode);
bool &&&(geomgrid gridcode, meshgeom geom3d);
bool &&&(sfmesh geom3d, geomgrid gridcode);
bool &&&(geomgrid gridcode, sfmesh geom3d);
bool &&&(vomesh geom3d, geomgrid gridcode);
bool &&&(geomgrid gridcode, vomesh geom3d);
bool &&&(geomgrid gridcode1, geomgrid gridcode2);

参数

参数名称

描述

gridcode/gridcode1/gridcode2

地理网格对象。

geom3d

三维几何对象。

注意事项

几何对象空间参考必须是CGC2000(SRID=4490)。

示例

  • 示例一:

    SELECT ST_GridFromText('GZ00262064446046072072') &&&
    'srid=4490;POINT(116.31522216796875 39.910277777777778 1001.8)'::geometry;

    返回值:

     st_3dintersects 
    -----------------
     f
  • 示例二:

    SELECT ST_GridFromText('GZ00262064') &&& ST_GridFromText('GZ00262063');

    返回值:

     st_3dintersects 
    -----------------
     t

@@>

查询地理网格对象代表的空间范围和几何对象是否包含。

语法

bool @@>(geometry geom3d, geomgrid gridcode);
bool @@>(geomgrid gridcode, geometry geom3d);
bool @@>(meshgeom geom3d, geomgrid gridcode);
bool @@>(geomgrid gridcode, meshgeom geom3d);
bool @@>(sfmesh geom3d, geomgrid gridcode);
bool @@>(geomgrid gridcode, sfmesh geom3d);
bool @@>(vomesh geom3d, geomgrid gridcode);
bool @@>(geomgrid gridcode, vomesh geom3d);
bool @@>(geomgrid gridcode1, geomgrid gridcode2);

参数

参数名称

描述

gridcode/gridcode1/gridcode2

地理网格对象。

geom3d

三维几何对象。

注意事项

几何对象空间参考必须是CGC2000(SRID=4490)。

示例

  • 示例一:

    SELECT ST_GridFromText('GZ00262064446046072072') @@> 
    'srid=4490;POINT(116.31522216796875 39.910277777777778 1001.8)'::geometry;

    返回值

     st_3dcontains 
    -----------------
     t
  • 示例二:

    SELECT ST_GridFromText('GZ00262064') @@> ST_GridFromText('GZ002620643');

    返回值:

     st_3dcontains 
    -----------------
     t

<@@

查询地理网格对象代表的空间范围和几何对象是否被包含。

语法

bool <@@(geometry geom3d, geomgrid gridcode);
bool <@@(geomgrid gridcode, geometry geom3d);
bool <@@(meshgeom geom3d, geomgrid gridcode);
bool <@@(geomgrid gridcode, meshgeom geom3d);
bool <@@(sfmesh geom3d, geomgrid gridcode);
bool <@@(geomgrid gridcode, sfmesh geom3d);
bool <@@(vomesh geom3d, geomgrid gridcode);
bool <@@(geomgrid gridcode, vomesh geom3d);
bool <@@(geomgrid gridcode1, geomgrid gridcode2);

参数

参数名称

描述

gridcode/gridcode1/gridcode2

地理网格对象。

geom3d

三维几何对象。

注意事项

几何对象空间参考必须是CGC2000(SRID=4490)。

示例

SELECT ST_GridFromText('GZ0026206435') <@@ ST_GridFromText('GZ002620643');

返回值:

 st_3dwithin 
-----------------
 t

&&

判断两个GeomGrid/Geometry对象或两个H3Grid/Geometry对象的外包框的空间相交关系,其中GeomGridH3Grid会转换为Geometry对象后再进行外包框空间关系判断。

语法

bool &&(GeomGrid A, GeomGrid B);
bool &&(GeomGrid A, Geometry B);
bool &&(Geometry A, GeomGrid B);
bool &&(H3Grid A, H3Grid B);
bool &&(H3Grid A, Geometry B);
bool &&(Geometry A, H3Grid B);

返回值

若满足空间相交关系则返回true,否则返回false。

参数

参数名称

描述

A

GeomGrid/H3Grid/Geometry对象。

B

GeomGrid/H3Grid/Geometry对象。

描述

  • 判断两个GeomGrid/Geometry对象或两个H3Grid/Geometry对象的外包框的空间相交关系,相交返回true,不相交返回false。

  • GeomGridH3Grid会转换为Geometry对象后再进行外包框空间关系判断。

  • 默认会将GeomGrid对象转换为4490坐标系的Geometry对象。

  • 默认会将H3Grid对象转换为4326坐标系的Geometry对象。

示例

  • 示例一:

    --&&(GeomGrid, GeomGrid)
    SELECT COUNT(*) from geomgrid_gist_test WHERE 'G00'::GeomGrid && code;

    返回值:

    
    -------
         5
  • 示例二:

    --&&(GeomGrid, Geometry)
    SELECT COUNT(*) from geomgrid_gist_test WHERE code && 'SRID=4490;POLYGON((80 20,90 20,90 25,80 25,80 20))'::Geometry;

    返回值:

    
    -------
         5
  • 示例三:

    --&&(H3Grid, H3Grid)
    SELECT COUNT(*) from h3grid_gist_test where code && ST_H3FromLatLng(-17.5, -65.0, 1);

    返回值:

    
    -------
         1
  • 示例四:

    --&&(Geometry, H3Grid)
    SELECT COUNT(*) from h3grid_gist_test WHERE 'SRID=4490;POLYGON((-70 -20,-60 -20,-60 -10,-70 -10,-70 -20))'::Geometry && code;

    返回值:

    
    -------
         1

~

判断两个GeomGrid/Geometry对象或两个H3Grid/Geometry对象的外包框的空间包含关系,其中GeomGridH3Grid会转换为Geometry对象后再进行外包框空间关系判断。

语法

bool ~(GeomGrid A, GeomGrid B);
bool ~(GeomGrid A, Geometry B);
bool ~(Geometry A, GeomGrid B);
bool ~(H3Grid A, H3Grid B);
bool ~(H3Grid A, Geometry B);
bool ~(Geometry A, H3Grid B);

返回值

若对象A的外包框包含对象B的外包框,则返回true,否则返回false。

参数

参数名称

描述

A

GeomGrid/H3Grid/Geometry对象。

B

GeomGrid/H3Grid/Geometry对象。

描述

  • 判断两个GeomGrid/Geometry对象或两个H3Grid/Geometry对象的外包框的空间包含关系,若对象A的外包框包含对象B的外包框,返回true,否则返回false。

  • GeomGridH3Grid会转换为Geometry对象后再进行外包框空间关系判断。

  • 默认会将GeomGrid对象转换为4490坐标系的Geometry对象。

  • 默认会将H3Grid对象转换为4326坐标系的Geometry对象。

示例

  • 示例一:

    --~(GeomGrid, GeomGrid)
    SELECT COUNT(*) from geomgrid_gist_test WHERE 'G00'::GeomGrid ~ code;

    返回值:

    
    -------
         5
  • 示例二:

    --~(Geometry, GeomGrid)
    SELECT COUNT(*) from geomgrid_gist_test WHERE 'SRID=4490;POLYGON((88 24,88.8 24,88.8 24.5,88 24.5,88 24))'::Geometry ~ code;

    返回值:

    
    -------
         2
  • 示例三:

    --~(H3Grid, H3Grid)
    SELECT COUNT(*) from h3grid_gist_test where code ~ ST_H3FromLatLng(-17.5, -65.0, 1);

    返回值:

    
    -------
         0
  • 示例四:

    --~(Geometry, H3Grid)
    SELECT COUNT(*) from h3grid_gist_test WHERE 'SRID=4326;POLYGON((0 30,5 30,5 38,0 38,0 30))'::Geometry ~ code;

    返回值:

    
    -------
         1

@

判断两个GeomGrid/Geometry对象或两个H3Grid/Geometry对象的外包框的空间包含关系,其中GeomGridH3Grid会转换为Geometry对象后再进行外包框空间关系判断。

语法

bool @(GeomGrid A, GeomGrid B);
bool @(GeomGrid A, Geometry B);
bool @(Geometry A, GeomGrid B);
bool @(H3Grid A, H3Grid B);
bool @(H3Grid A, Geometry B);
bool @(Geometry A, H3Grid B);

返回值

若对象A的外包框被对象B的外包框包含,则返回true,否则返回false。

参数

参数名称

描述

A

GeomGrid/H3Grid/Geometry对象。

B

GeomGrid/H3Grid/Geometry对象。

描述

  • 判断两个GeomGrid/Geometry对象或两个H3Grid/Geometry对象的外包框的空间包含关系,若对象A的外包框被对象B的外包框包含,返回true,否则返回false。

  • GeomGridH3Grid会转换为Geometry对象后再进行外包框空间关系判断。

  • 默认会将GeomGrid对象转换为4490坐标系的Geometry对象。

  • 默认会将H3Grid对象转换为4326坐标系的Geometry对象。

示例

  • 示例一:

    --@(GeomGrid, GeomGrid)
    SELECT COUNT(*) from geomgrid_gist_test WHERE code @ 'G00'::GeomGrid;

    返回值:

    
    -------
         5
  • 示例二:

    --@(GeomGrid, Geometry)
    SELECT COUNT(*) from geomgrid_gist_test WHERE code @ 'SRID=4490;POLYGON((88 24,88.8 24,88.8 24.5,88 24.5,88 24))'::Geometry;

    返回值:

    
    -------
         2
  • 示例三:

    --@(H3Grid, H3Grid)
    SELECT COUNT(*) from h3grid_gist_test where code @ ST_H3FromLatLng(-17.5, -65.0, 1);

    返回值:

    
    -------
         1
  • 示例四:

    --@(H3Grid, Geometry)
    SELECT COUNT(*) from h3grid_gist_test WHERE code @ 'SRID=4490;POLYGON((0 30,5 30,5 38,0 38,0 30))'::Geometry;

    返回值:

    
    -------
         1