几何操作符
+
描述:平移,即从第一个参数的每个点的坐标中加上第二个point的坐标。
示例:
1 2 3 4 5 |
SELECT box '((0,0),(1,1))' + point '(2.0,0)' AS RESULT; result ------------- (3,1),(2,0) (1 row) |
-
描述:平移,从第一个参数的每个点的坐标中减去第二个point的坐标。
示例:
1 2 3 4 5 |
SELECT box '((0,0),(1,1))' - point '(2.0,0)' AS RESULT; result --------------- (-1,1),(-2,0) (1 row) |
*
描述:伸展/旋转。
示例:
1 2 3 4 5 |
SELECT box '((0,0),(1,1))' * point '(2.0,0)' AS RESULT; result ------------- (2,2),(0,0) (1 row) |
/
描述:收缩/旋转。
示例:
1 2 3 4 5 |
SELECT box '((0,0),(2,2))' / point '(2.0,0)' AS RESULT; result ------------- (1,1),(0,0) (1 row) |
#
描述:两个图形交点或者交面。
示例:
1 2 3 4 5 |
SELECT box'((1,-1),(-1,1))' # box'((1,1),(-1,-1))' AS RESULT; result -------- (1,1),(-1,-1) (1 row) |
#
描述:图形的路径数目或多边形顶点数。
示例:
1 2 3 4 5 |
SELECT # path'((1,0),(0,1),(-1,0))' AS RESULT; result -------- 3 (1 row) |
@-@
描述:图形的长度或者周长。
示例:
1 2 3 4 5 |
SELECT @-@ path '((0,0),(1,0))' AS RESULT; result -------- 2 (1 row) |
@@
描述:图形的中心。
示例:
1 2 3 4 5 |
SELECT @@ circle '((0,0),10)' AS RESULT; result -------- (0,0) (1 row) |
##
描述:第一个图形相对第二个图形的最近点。
示例:
1 2 3 4 5 |
SELECT point '(0,0)' ## box '((2,0),(0,2))' AS RESULT; result -------- (0,0) (1 row) |
<->
描述:两个图形之间的距离。
示例:
1 2 3 4 5 |
SELECT circle '((0,0),1)' <-> circle '((5,0),1)' AS RESULT; result -------- 3 (1 row) |
&&
描述:两个图形是否重叠(有一个共同点就为真)。
示例:
1 2 3 4 5 |
SELECT box '((0,0),(1,1))' && box '((0,0),(2,2))' AS RESULT; result -------- t (1 row) |
<<
描述:图形是否全部在另一个图形的左边(没有相同的横坐标)。
示例:
1 2 3 4 5 |
SELECT circle '((0,0),1)' << circle '((5,0),1)' AS RESULT; result -------- t (1 row) |
>>
描述:图形是否全部在另一个图形的右边(没有相同的横坐标)。
示例:
1 2 3 4 5 |
SELECT circle '((5,0),1)' >> circle '((0,0),1)' AS RESULT; result -------- t (1 row) |
&<
描述:图形的最右边是否不超过在另一个图形的最右边。
示例:
1 2 3 4 5 |
SELECT box '((0,0),(1,1))' &< box '((0,0),(2,2))' AS RESULT; result -------- t (1 row) |
&>
描述:图形的最左边是否不超过在另一个图形的最左边。
示例:
1 2 3 4 5 |
SELECT box '((0,0),(3,3))' &> box '((0,0),(2,2))' AS RESULT; result -------- t (1 row) |
<<|
描述:图形是否全部在另一个图形的下边(没有相同的纵坐标)。
示例:
1 2 3 4 5 |
SELECT box '((0,0),(3,3))' <<| box '((3,4),(5,5))' AS RESULT; result -------- t (1 row) |
|>>
描述:图形是否全部在另一个图形的上边(没有相同的纵坐标)。
示例:
1 2 3 4 5 |
SELECT box '((3,4),(5,5))' |>> box '((0,0),(3,3))' AS RESULT; result -------- t (1 row) |
&<|
描述:图形的最上边是否不超过另一个图形的最上边。
示例:
1 2 3 4 5 |
SELECT box '((0,0),(1,1))' &<| box '((0,0),(2,2))' AS RESULT; result -------- t (1 row) |
|&>
描述:图形的最下边是否不超过另一个图形的最下边。
示例:
1 2 3 4 5 |
SELECT box '((0,0),(3,3))' |&> box '((0,0),(2,2))' AS RESULT; result -------- t (1 row) |
<^
描述:图形是否低于另一个图形(允许两个图形有接触)。
示例:
1 2 3 4 5 |
SELECT box '((0,0),(-3,-3))' <^ box '((0,0),(2,2))' AS RESULT; result -------- t (1 row) |
>^
描述:图形是否高于另一个图形(允许两个图形有接触)。
示例:
1 2 3 4 5 |
SELECT box '((0,0),(2,2))' >^ box '((0,0),(-3,-3))' AS RESULT; result -------- t (1 row) |
?#
描述:两个图形是否相交。
示例:
1 2 3 4 5 |
SELECT lseg '((-1,0),(1,0))' ?# box '((-2,-2),(2,2))' AS RESULT; result -------- t (1 row) |
?-
描述:图形是否处于水平位置。
示例:
1 2 3 4 5 |
SELECT ?- lseg '((-1,0),(1,0))' AS RESULT; result -------- t (1 row) |
?-
描述:图形是否水平对齐。
示例:
1 2 3 4 5 |
SELECT point '(1,0)' ?- point '(0,0)' AS RESULT; result -------- t (1 row) |
?|
描述:图形是否处于竖直位置。
示例:
1 2 3 4 5 |
SELECT ?| lseg '((-1,0),(1,0))' AS RESULT; result -------- f (1 row) |
?|
描述:图形是否竖直对齐。
示例:
1 2 3 4 5 |
SELECT point '(0,1)' ?| point '(0,0)' AS RESULT; result -------- t (1 row) |
?-|
描述:两条线是否垂直。
示例:
1 2 3 4 5 |
SELECT lseg '((0,0),(0,1))' ?-| lseg '((0,0),(1,0))' AS RESULT; result -------- t (1 row) |
?||
描述:两条线是否平行。
示例:
1 2 3 4 5 |
SELECT lseg '((-1,0),(1,0))' ?|| lseg '((-1,2),(1,2))' AS RESULT; result -------- t (1 row) |
@>
描述:图形是否包含另一个图形。
示例:
1 2 3 4 5 |
SELECT circle '((0,0),2)' @> point '(1,1)' AS RESULT; result -------- t (1 row) |
<@
描述:图形是否被包含于另一个图形。
示例:
1 2 3 4 5 |
SELECT point '(1,1)' <@ circle '((0,0),2)' AS RESULT; result -------- t (1 row) |
~=
描述:两个图形是否相同?
示例:
1 2 3 4 5 |
SELECT polygon '((0,0),(1,1))' ~= polygon '((1,1),(0,0))' AS RESULT; result -------- t (1 row) |