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