9.11. 几何函数和运算符#
几何类型point
、box
、lseg
、line
、path
、polygon
和circle
有一组大量的原生支持函数和运算符,如表 9.36、表 9.37和表 9.38所示。
表 9.36. 几何运算符
运算符 说明 示例 |
---|
将第二个
|
连接两个开放路径(如果任一路径闭合,则返回 NULL)。
|
从第一个参数的每个点的坐标中减去第二个
|
将第一个参数的每个点乘以第二个
|
将第一个参数的每个点除以第二个
|
计算总长度。适用于
|
计算中心点。适用于
|
返回点的数量。适用于
|
计算交点,如果没有交点,则返回 NULL。适用于
|
计算两个框的交集,如果没有交集,则返回 NULL。
|
计算第一个对象在第二个对象上最近的点。适用于以下类型对:(
|
计算对象之间的距离。适用于所有七种几何类型,所有
|
第一个对象是否包含第二个对象?适用于以下类型的对:(
|
第一个对象是否包含在或位于第二个对象中?适用于以下类型的对:(
|
这些对象是否重叠?(有一个公共点即为真。)适用于
|
第一个对象是否严格位于第二个对象的左侧?适用于
|
第一个对象是否严格位于第二个对象的右侧?适用于
|
第一个对象是否不延伸到第二个对象的右侧?适用于
|
第一个对象是否不延伸到第二个对象的左侧?适用于
|
第一个对象是否严格位于第二个对象的下方?适用于
|
第一个对象是否严格位于第二个对象的上方?适用于
|
第一个对象是否不延伸到第二个对象的下方?适用于
|
第一个对象是否不延伸到第二个对象下方?适用于
|
第一个对象是否在第二个对象下方(允许边缘相切)?
|
第一个对象是否在第二个对象上方(允许边缘相切)?
|
这些对象是否相交?适用于以下类型的对:(
|
直线是否水平?
|
点是否水平对齐(即,y 坐标相同)?
|
直线是否垂直?
|
点是否垂直对齐(即,x 坐标相同)?
|
线段是否垂直?
|
线段是否平行?
|
这些对象是否相同?适用于
|
[a] “旋转” 框时,这些运算符只会移动其角点:框仍被视为具有与轴平行的边。因此,框的大小不会保留,而真正的旋转会保留。 |
注意
请注意,“相同于”运算符~=
表示点
、框
、多边形
和圆
类型的通常相等概念。某些几何类型还具有=
运算符,但=
仅比较相等的面积。对于这些类型可用的其他标量比较运算符(<=
等),同样比较面积。
注意
在PostgreSQL14 之前,点严格低于/高于比较运算符点``<<|``点
和点``|>>``点
分别称为<^
和>^
。这些名称仍然可用,但已弃用,最终将被移除。
表 9.37 几何函数
表 9.38 几何类型转换函数
可以将point
的两个分量号访问为一个带有索引 0 和 1 的数组。例如,如果t.p
是一个point
列,那么SELECT p[0] FROM t
检索 X 坐标,而UPDATE t SET p[1] = ...
更改 Y 坐标。同样,类型为box
或lseg
的值可以视为两个point
值的数组。