# 8.8.几何类型

8.8.1. 要点

8.8.2. 线

8.8.3. 线段

8.8.4. 盒

8.8.5. 路径

8.8.6. 多边形

8.8.7. 圈子

几何数据类型表示二维空间对象。表8.20显示PostgreSQL中可用的几何类型。

表8.20.几何类型

名称 存储大小 描述 代表
指向 16字节 飞机上的点 (x,y)
线 32字节 无限线 {A,B,C}
lseg 32字节 有限线段 ((x1,y1),(x2,y2))
32字节 矩形盒 ((x1,y1),(x2,y2))
路径 16+16n字节 闭合路径(类似于多边形) ((x1,y1),…)
路径 16+16n字节 开放道路 [(x1,y1),。。。(]
多边形 40+16n字节 多边形(类似于闭合路径) ((x1,y1),…)
圆圈 24字节 圆圈 \<(x,y),r>(中心点和半径)

一组丰富的函数和运算符可用于执行各种几何操作,如缩放、平移、旋转和确定交点。这些问题在本文中有详细的解释第9.11节.

# 8.8.1.要点

点是几何类型的基本二维构造块。类型的值指向使用以下任一语法指定:

( x , y )
  x , y

哪里*十、y*是各自的坐标,作为浮点数。

使用第一种语法输出点。

# 8.8.2.台词

直线由线性方程表示*A.x+By+C=0,其中A.B*两者都不是零。类型的值线输入和输出的格式如下:

{ 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.盒子

长方体由位于长方体对角的成对点表示。类型的值使用以下任一语法指定:

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

哪里(*x1*,*y1*)(*x2*,*y2*)是盒子的任何两个相对的角落。

框是使用第二种语法输出的。

输入时可以提供任何两个相反的角,但值将根据需要重新排序,以按该顺序存储右上角和左下角。

# 8.8.5.路径

路径由连接点列表表示。路径可以是打开,列表中的第一个点和最后一个点被视为未连接,或关闭,其中第一个点和最后一个点被认为是连接的。

类型的值路径使用以下任一语法指定:

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

其中,点是构成路径的线段的端点。方括号([])指示开放路径,而括号(())指示一条封闭的路径。当省略最外面的括号时,如在第三到第五个语法中,则假定为闭合路径。

根据需要,使用第一或第二种语法输出路径。

# 8.8.6.多边形

多边形由点列表(多边形的顶点)表示。多边形与闭合路径非常相似,但存储方式不同,并且有自己的一组支持例程。

类型的值多边形使用以下任一语法指定:

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

其中,点是构成多边形边界的线段的端点。

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

# 8.8.7.圆圈

圆由圆心和半径表示。类型的值圆圈使用以下任一语法指定:

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

哪里(*十、*,*y*)是中心点和*r*是圆的半径。

圆是使用第一种语法输出的。