↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
历史版本。 PostgreSQL 7.1 已结束支持。 请参阅 当前版本手册.

4.8. 几何函数和操作符 #

几何类型 point、box、lseg、line、path、polygon 和 circle 有一大套原生支持的函数和操作符。

表 4.15. 几何操作符

操作符描述用法
+平移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))'

表 4.16. 几何函数

函数返回类型描述示例
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)int4点数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))')

表 4.17. 几何类型转换函数

函数返回类型描述示例
box ( circle )box将圆转换为矩形框box(circle '((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 )polygon12 点多边形polygon(box '((0,0),(1,1))')
polygon ( circle )polygon12 点多边形polygon(circle '((0,0),2.0)')
polygon(npts, circle)polygonnpts 点多边形polygon(12, circle '((0,0),2.0)')
polygon ( path )polygon将路径转换为多边形polygon(path '((0,0),(1,1),(2,0))')

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.