几何类型point
、box
、lseg
、line
、path
、polygon
和circle
有一套丰富的原生支持函数和运算符,如表 9.36、表 9.37和表 9.38所示。
表 9.36. 几何运算符
运算符 描述 示例 |
---|
将第二个
|
连接两个开放路径(如果任一路径是闭合的,则返回NULL)。
|
从第一个参数的每个点的坐标中减去第二个
|
将第一个参数的每个点乘以第二个
|
将第一个参数的每个点除以第二个
|
计算总长度。适用于
|
计算中心点。适用于
|
返回点的数量。适用于
|
计算交点,如果不存在则返回NULL。适用于
|
计算两个box的交集,如果不存在则返回NULL。
|
计算第二个对象上最接近第一个对象的点。适用于以下类型对:(
|
计算对象之间的距离。适用于所有七种几何类型,适用于
|
第一个对象是否包含第二个对象?适用于以下类型对:(
|
第一个对象是否包含在第二个对象中或在第二个对象上?适用于以下类型对:(
|
这些对象是否重叠?(一个公共点使这成为真)。适用于
|
第一个对象是否严格位于第二个对象的左侧?适用于
|
第一个对象是否严格位于第二个对象的右侧?适用于
|
第一个对象是否不延伸到第二个对象的右侧?适用于
|
第一个对象是否不延伸到第二个对象的左侧?适用于
|
第一个对象是否严格位于第二个对象的下方?适用于
|
第一个对象是否严格位于第二个对象的上面?适用于
|
第一个对象是否不延伸到第二个对象的上面?适用于
|
第一个对象是否不延伸到第二个对象的下面?适用于
|
第一个对象是否位于第二个对象的下方(允许边缘接触)?
|
第一个对象是否位于第二个对象的上面(允许边缘接触)?
|
这些对象是否相交?适用于以下类型的组合:(
|
线是否水平?
|
点是否水平对齐(即具有相同的 y 坐标)?
|
线是否垂直?
|
点是否垂直对齐(即具有相同的 x 坐标)?
|
线是否垂直?
|
线是否平行?
|
这些对象是否相同?适用于
|
[a] 使用这些运算符“旋转”盒只会移动其角点:盒仍然被认为具有平行于轴的边。因此,盒的大小不会被保留,因为真正的旋转会这样做。 |
请注意,“相同”运算符 ~=
表示 点
、盒
、多边形
和 圆
类型的通常相等概念。一些几何类型也具有 =
运算符,但 =
仅比较相等的面积。在这些类型中,其他标量比较运算符(<=
等)在可用时也比较面积。
在 PostgreSQL 14 之前,点严格位于下方/上方的比较运算符 点
<<|
点
和 点
|>>
点
分别称为 <^
和 >^
。这些名称仍然可用,但已弃用,最终将被删除。
表 9.37. 几何函数
函数 描述 示例 |
---|
计算面积。适用于
|
计算中心点。适用于
|
将盒的对角线提取为线段(与
|
计算圆的直径。
|
计算盒的垂直大小。
|
路径是否闭合?
|
路径是否开放?
|
计算总长度。适用于
|
返回点的数量。适用于
|
将路径转换为闭合形式。
|
将路径转换为开放形式。
|
计算圆的半径。
|
计算穿过这两个点的线的斜率。
|
计算盒的水平大小。
|
表 9.38. 几何类型转换函数
可以像访问索引为0和1的数组一样访问point
的两个组成部分。例如,如果t.p
是一个point
列,则SELECT p[0] FROM t
检索X坐标,而UPDATE t SET p[1] = ...
更改Y坐标。同样,类型为box
或lseg
的值可以被视为两个point
值的数组。
如果您在文档中发现任何不正确的内容,与您对特定功能的体验不符,或者需要进一步说明,请使用此表单报告文档问题。