全部產品
Search
文件中心

ApsaraDB RDS:操作符

更新時間:Aug 12, 2025

本文將介紹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對象的外包框的空間相交關係,其中GeomGrid或H3Grid會轉換為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。

  • GeomGrid或H3Grid會轉換為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對象的外包框的空間內含項目關聯性,其中GeomGrid或H3Grid會轉換為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。

  • GeomGrid或H3Grid會轉換為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對象的外包框的空間內含項目關聯性,其中GeomGrid或H3Grid會轉換為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。

  • GeomGrid或H3Grid會轉換為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