5.7. 几何类型

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

Table 5-17. 几何类型

几何类型存储空间表现形式描述
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+32n 字节((x1,y1),...)多边形(与闭合路径相似)
circle24 字节<(x,y),r>圆(圆心和半径)

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

5.7.1. Point(点)

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

( x , y )
  x , y

这里的参数是

x

是用浮点数表示的点的 x 坐标。

y

是用浮点数表示的点的 y 坐标。

5.7.2. 线段

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

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

这里的参数是

(x1,y1)
(x2,y2)

是线段的端点。

5.7.3. Box(方)

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

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

这里的参数是

(x1,y1)
(x2,y2)

是方形的一对对角点。

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

5.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    

这里的参数是

(x,y)

组成路径的线段的端点。 前面的([)表明一个开放的路径,而前面的(()表明一个闭合的路径。

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

5.7.5. Polygon(多边形)

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

polygon 用下列语法声明:

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

这里的参数是

(x,y)

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

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

5.7.6. Circle(圆)

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

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

这里的参数是

(x,y)

圆心

r

圆的半径

圆的输出用第一种格式.