几何类型 point、box、lseg、line、path、polygon 和 circle 有一组大量的原生支持函数和运算符,如 表 9.36、表 9.37 和 表 9.38 所示。
表 9.36. 几何运算符
|
运算符 说明 示例 |
|---|
|
将第二个
|
|
连接两个开放路径(如果任一路径闭合,则返回 NULL)。
|
|
从第一个参数的每个点的坐标中减去第二个
|
|
将第一个参数的每个点乘以第二个
|
|
将第一个参数的每个点除以第二个
|
|
计算总长度。适用于
|
|
计算中心点。适用于
|
|
返回点的数量。适用于
|
|
计算交点,如果没有交点,则返回 NULL。适用于
|
|
计算两个框的交集,如果没有交集,则返回 NULL。
|
|
计算第一个对象在第二个对象上最近的点。适用于以下类型对:(
|
|
计算对象之间的距离。适用于所有七种几何类型,所有
|
|
第一个对象是否包含第二个对象?适用于以下类型的对:(
|
|
第一个对象是否包含在或位于第二个对象中?适用于以下类型的对:(
|
|
这些对象是否重叠?(有一个公共点即为真。)适用于
|
|
第一个对象是否严格位于第二个对象的左侧?适用于
|
|
第一个对象是否严格位于第二个对象的右侧?适用于
|
|
第一个对象是否不延伸到第二个对象的右侧?适用于
|
|
第一个对象是否不延伸到第二个对象的左侧?适用于
|
|
第一个对象是否严格位于第二个对象的下方?适用于
|
|
第一个对象是否严格位于第二个对象的上方?适用于
|
|
第一个对象是否不延伸到第二个对象的下方?适用于
|
|
第一个对象是否不延伸到第二个对象下方?适用于
|
|
第一个对象是否在第二个对象下方(允许边缘相切)?
|
|
第一个对象是否在第二个对象上方(允许边缘相切)?
|
|
这些对象是否相交?适用于以下类型的对:(
|
|
直线是否水平?
|
|
点是否水平对齐(即,y 坐标相同)?
|
|
直线是否垂直?
|
|
点是否垂直对齐(即,x 坐标相同)?
|
|
线段是否垂直?
|
|
线段是否平行?
|
|
这些对象是否相同?适用于
|
|
[a] “旋转” 框时,这些运算符只会移动其角点:框仍被视为具有与轴平行的边。因此,框的大小不会保留,而真正的旋转会保留。 |
请注意,“相同于” 运算符 ~= 表示 点、框、多边形 和 圆 类型的通常相等概念。某些几何类型还具有 = 运算符,但 = 仅比较相等的 面积。对于这些类型可用的其他标量比较运算符(<= 等),同样比较面积。
在 PostgreSQL 14 之前,点严格低于/高于比较运算符 点 <<| 点 和 点 |>> 点 分别称为 <^ 和 >^。这些名称仍然可用,但已弃用,最终将被移除。
表 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 值的数组。
如果您在文档中看到任何不正确、与您对特定功能的体验不符或需要进一步澄清的内容,请使用 此表单 报告文档问题。