本文將介紹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