您的位置:寻梦网首页编程乐园数据库PostgreSQL 7.2 Documentation

4.9. 几何函数和操作符

有许多内置函数和操作符支持 几何类型 point box lseg line path polygon circle 等.

Table 4-18. 几何函数和操作符

操作符 描述 用法
+ 平移 box '((0,0),(1,1))' + point '(2.0,0)'
- 平移 box '((0,0),(1,1))' - point '(2.0,0)'
* 伸缩/旋转 box '((0,0),(1,1))' * point '(2.0,0)'
/ 伸缩/旋转 box '((0,0),(2,2))' / point '(2.0,0)'
# '((1,-1),(-1,1))' # '((1,1),(-1,-1))'
# 多边形顶点数 # '((1,0),(0,1),(-1,0))'
## 最近点 point '(0,0)' ## lseg '((2,0),(0,2))'
&& 重叠? box '((0,0),(1,1))' && box '((0,0),(2,2))'
&< 左重叠? box '((0,0),(1,1))' &< box '((0,0),(2,2))'
&> 右重叠? box '((0,0),(3,3))' &> box '((0,0),(2,2))'
<-> 两者间距离 circle '((0,0),1)' <-> circle '((5,0),1)'
<< 在左边? circle '((0,0),1)' << circle '((5,0),1)'
<^ 低于? circle '((0,0),1)' <^ circle '((0,5),1)'
>> 在右边? circle '((5,0),1)' >> circle '((0,0),1)'
>^ 高于? circle '((0,5),1)' >^ circle '((0,0),1)'
?# 相交或重叠? lseg '((-1,0),(1,0))' ?# box '((-2,-2),(2,2))';
?- 水平? point '(1,0)' ?- point '(0,0)'
?-| 垂直? lseg '((0,0),(0,1))' ?-| lseg '((0,0),(1,0))'
@-@ 长度或周长 @-@ path '((0,0),(1,0))'
?| 竖直? point '(0,1)' ?| point '(0,0)'
?|| 平行? lseg '((-1,0),(1,0))' ?|| lseg '((-1,2),(1,2))'
@ 包含或在...上 point '(1,1)' @ circle '((0,0),2)'
@@ ...的中心 @@ circle '((0,0),10)'
~= 与...相同 polygon '((0,0),(1,1))' ~= polygon '((1,1),(0,0))'

Table 4-19. 几何函数

函数 返回 描述 例子
area (object) double precision 目标的面积 area(box '((0,0),(1,1))')
box (box,box) box 方的交 box(box '((0,0),(1,1))',box '((0.5,0.5),(2,2))')
center (object) point 对象中心 center(box '((0,0),(1,2))')
diameter (circle) double precision 圆直径 diameter(circle '((0,0),2.0)')
height (box) double precision 方的竖直高度 height(box '((0,0),(1,1))')
isclosed (path) boolean 是闭合路径吗? isclosed(path '((0,0),(1,1),(2,0))')
isopen (path) boolean 是开环路径吗? isopen(path '[(0,0),(1,1),(2,0)]')
length (object) double precision 对象长度 length(path '((-1,0),(1,0))')
pclose (path) path 把路径转换为闭合 popen(path '[(0,0),(1,1),(2,0)]')
npoint (path) integer 点数 npoints(path '[(0,0),(1,1),(2,0)]')
popen (path) path 把路径转换为开环的 popen(path '((0,0),(1,1),(2,0))')
radius (circle) double precision 圆半径 radius(circle '((0,0),2.0)')
width (box) double precision 水平尺寸(宽) width(box '((0,0),(1,1))')

Table 4-20. 几何类型转换函数

函数 返回 描述 例子
box ( circle ) box 将圆转换成长方形 box(cricle '((0,0),2.0)')
box ( point , point ) box 将点转换成长方形 box(point '(0,0)', point '(1,1)')
box ( polygon ) box 将多边形转换成长方形 box(polygon '((0,0),(1,1),(2,0))')
circle ( box ) circle 方转换成圆 circle(box '((0,0),(1,1))')
circle ( point , double precision ) circle 点转换成圆 circle(point '(0,0)',2.0)
lseg ( box ) lseg 将长方形判为线段 lseg(box '((-1,0),(1,0))')
lseg ( point , point ) lseg 点转换成线段 lseg(point '(-1,0)',point '(1,0)')
path ( polygon ) point 多边形转换成路径 path(polygon '((0,0),(1,1),(2,0))')
point ( circle ) point 转换成点(中心) point(circle '((0,0),2.0)')
point ( lseg , lseg ) point 转换成点(相交) point(lseg '((-1,0),(1,0))', lseg '((-2,-2),(2,2))')
point ( polygon ) point 多边形中心 point(polygon '((0,0),(1,1),(2,0))')
polygon ( box ) polygon 转换成12点的多边形 polygon(box '((0,0),(1,1))')
polygon ( circle ) polygon 转换成12点的多边形 polygon(circle '((0,0),2.0)')
polygon ( npts , circle ) polygon 转换成 npts 点多边形 polygon(12, circle '((0,0),2.0)')
polygon ( path ) polygon 路径转换成多边形 polygon(path '((0,0),(1,1),(2,0))')