8.7. 几何类型

几何数据类型表示二维的平面物体. Table 8-16 显示了PostgreSQL 里面可以用的几何类型。 最基本的类型:点,是其他类型的基础.

Table 8-16. 几何类型

名字存储空间描述表现形式
point16 字节空间中一点(x,y)
line32 字节(无穷)直线(未完全实现)((x1,y1),(x2,y2))
lseg32 字节(有限)线段((x1,y1),(x2,y2))
box32 字节长方形((x1,y1),(x2,y2))
path16+16n 字节闭合路径(与多边形类似)((x1,y1),...)
path16+16n 字节开放路径[(x1,y1),...]
polygon40+16n 字节多边形(与闭合路径相似)((x1,y1),...)
circle24 字节圆(圆心和半径)<(x,y),r>

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

8.7.1. Point(点)

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

( x , y )
  x , y

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

8.7.2. 线段

线段 (lseg)是用一对点来代表的. lseg 的值用下面语法声明:

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

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

8.7.3. Box(方)

方是用一对对角点来表示的。 box 的值用下面语法声明:

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

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

方的输出使用第一种语法.在输入时将按先右上角后左下角的顺序重新排列. 你也可以输入其他的一对对角点. 但输入时将先从输入中和存储的角中计算出左下角和右上角然后再存储.

8.7.4. Path(路径)

路径由一系列连接的点组成.路径可能是开放的, 也就是第一个点和最后一个点没有连接,也可能是闭合 的,这时第一个和最后一个点连接起来.我们提供了函数 popen(p)pclose(p) 来强制路径是开放的还 是闭合的,可以用函数 isopen(p)isclosed(p) 来在查询中选择是那种.

path 的数值用下面语法声明:

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

这里的点是 组成路径的线段的端点。 方括弧([])表明一个开放的路径,圆括弧(())表明一个闭合的路径。

路径的输出使用第一种语法输出.

8.7.5. Polygon(多边形)

多边形由一系列点代表.多边形可以认为与闭合路径一样, 但是存储方式不一样而且有自己的一套支持过程/函数.

polygon 的数值用下列语法声明:

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

这里的点是 组成多边形边界的线段的端点。

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

8.7.6. Circle(圆)

圆由一个圆心和一个半径代表. circle 的数值用下面语法表示:

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

这里的 (x,y) 是 圆心 而r 圆的半径

圆的输出用第一种格式.