PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 章 8. 数据类型 | 下一页

# 8.8. 几何类型

几何数据类型表示二维的平面物体。表 8-20 显示了PostgreSQL里面可用的几何类型。

表 8-20. 几何类型

名字 | 存储空间 | 说明 | 表现形式
--- | --- | --- | ---
`point` | 16 字节 | 平面中的点 | (x,y)
`line` | 32 字节 | (无穷)直线 | {A,B,C}
`lseg` | 32 字节 | (有限)线段 | ((x1,y1),(x2,y2))
`box` | 32 字节 | 矩形 | ((x1,y1),(x2,y2))
`path` | 16+16n 字节 | 闭合路径(与多边形类似) | ((x1,y1),...)
`path` | 16+16n 字节 | 开放路径 | [(x1,y1),...]
`polygon` | 40+16n 字节 | 多边形(与闭合路径相似) | ((x1,y1),...)
`circle` | 24 字节 | 圆 | <(x,y),r> (圆心和半径)

我们有一系列丰富的函数和操作符可用来进行各种几何计算，如拉伸、转换、旋转、计算相交等。 它们在第 9.11 节里有解释。

## 8.8.1. 点

点是几何类型的基本二维构造单位。用下面语法描述`point`的数值：

    ( x , y )
      x , y

这里的`x`和`y`是用浮点数表示的点的坐标。

点输出使用第一种语法。

## 8.8.2. 线

线是由线的方程式`A`x + `B`y + `C` = 0 表示的，这里的`A`和`B`都不是0。 类型`line`的值以下列的形式输入和输出：

    { A, B, C }

作为选择，下列的任意一种格式都可以用作输入：

    [ ( x1 , y1 ) , ( x2 , y2 ) ]
    ( ( x1 , y1 ) , ( x2 , y2 ) )
      ( x1 , y1 ) , ( x2 , y2 )
        x1 , y1   ,   x2 , y2

这里的`(`x1`,`y1`)` 和`(`x2`,`y2`)` 是线上的两个不同的点。

## 8.8.3. 线段

线段是用线段的一对端点来代表的。`lseg`的值用下面语法声明：

    [ ( x1 , y1 ) , ( x2 , y2 ) ]
    ( ( x1 , y1 ) , ( x2 , y2 ) )
      ( x1 , y1 ) , ( x2 , y2 )
        x1 , y1   ,   x2 , y2

这里的`(`x1`,`y1`)` 和`(`x2`,`y2`)`是线段的端点。

线段输出使用第一种语法。

## 8.8.4. 矩形

矩形是用一对对角点来表示的。`box`的值用下面语法声明：

    ( ( x1 , y1 ) , ( x2 , y2 ) )
      ( x1 , y1 ) , ( x2 , y2 )
        x1 , y1   ,   x2 , y2

这里的`(`x1`,`y1`)` 和`(`x2`,`y2`)` 是矩形的一对对角点。

矩形的输出使用第二种语法。

任何两个对角都可以出现在输入中，但按照那样的顺序， 右上角和左下角的值会被重新排序以存储。

## 8.8.5. 路径

路径由一系列连接的点组成。路径可能是开放的， 也就是认为列表中第一个点和最后一个点没有连接，也可能是闭合的， 这时认为第一个和最后一个点连接起来。

`path`的数值用下面语法声明：

    [ ( x1 , y1 ) , ... , ( xn , yn ) ]
    ( ( x1 , y1 ) , ... , ( xn , yn ) )
      ( x1 , y1 ) , ... , ( xn , yn )
      ( x1 , y1   , ... ,   xn , yn )
        x1 , y1   , ... ,   xn , yn

这里的点是组成路径的线段的端点。方括弧(`[]`)表明一个开放的路径， 圆括弧(`()`)表明一个闭合的路径。当最外层的括号被省略， 如在第三至第五语法，会假定一个封闭的路径。

路径的输出使用第一种或第二种语法输出，在适当的时候。

## 8.8.6. 多边形

多边形由一系列点代表(多边形的顶点)。多边形可以认为与闭合路径一样，但是存储方式不一样而且有自己的一套支持函数。

`polygon`的数值用下列语法声明：

    ( ( x1 , y1 ) , ... , ( xn , yn ) )
      ( x1 , y1 ) , ... , ( xn , yn )
      ( x1 , y1   , ... ,   xn , yn )
        x1 , y1   , ... ,   xn , yn

这里的点是多边形的端点。

多边形输出使用第一种语法。

## 8.8.7. 圆

圆由一个圆心和半径标识。`circle`的数值用下面语法表示：

    < ( x , y ) , r >
    ( ( x , y ) , r )
      ( x , y ) , r
        x , y   , r

这里的`(`x`,`y`)` 是圆心，`r`是半径。

圆的输出用第一种格式。

上一页 | 起始页 | 下一页
枚举类型 | 上一级 | 网络地址类型