Postgresql 中文操作指南

8.8. Geometric Types #

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

Table 8.20. Geometric Types

Name

Storage Size

Description

Representation

point

16 bytes

Point on a plane

(x,y)

line

32 bytes

Infinite line

{A,B,C}

lseg

32 bytes

Finite line segment

x1,y1),(x2,y2

box

32 bytes

Rectangular box

x1,y1),(x2,y2

path

16+16n bytes

闭合路径(类似多边形)

((x1,y1),…​)

path

16+16n bytes

Open path

[(x1,y1),…​]

polygon

40+16n bytes

多边形(类似闭合路径)

((x1,y1),…​)

circle

24 bytes

Circle

<(x,y),r>(圆心和半径)

提供了丰富的函数和运算符集,用于执行各种几何运算,例如缩放、平移、旋转和确定交点。它们在 Section 9.11 中进行了说明。

8.8.1. Points #

点是用于几何类型的基本二维模块。通过以下语法之一指定类型 point 的值:

( x , y )
  x , y

其中 xy 分别是坐标,是浮点数。

使用第一个语法输出点。

8.8.2. Lines #

线段用线性方程 A_x + _B_y + _C=0 来表示,其中,AB 都不为零。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. Line Segments #

线段用作为线段端点的成对点表示。lseg 类型的值使用以下任何语法指定:

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

其中,(_x1,y1)_ 和 (_x2,y2)_ 是线段的端点。

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

8.8.4. Boxes #

盒子用作为盒子对角线的成对点表示。box 类型的值使用以下任何语法指定:

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

其中,(_x1,y1)_ 和 (_x2,y2)_ 是盒子的任意两个对角线。

使用第二个语法输出盒子。

任何两个对角线都可以在输入中提供,但会根据需要重新排序值以先存储右上角,再存储左下角。

8.8.5. Paths #

路径由连接点列表表示。路径可以是 open,其中列表中的第一个和最后一个点被认为是未连接的,也可以是 closed,其中列表中的第一个和最后一个点被认为是连接的。

path 类型的值使用以下任何语法指定:

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

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

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

8.8.6. Polygons #

多边形由点列表 (多边形的顶点) 表示。多边形与闭合路径非常相似;本质区别在于多边形被认为包含在其内部的面积,而路径则不包含。

polygon 类型的值使用以下任何语法指定:

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

其中,这些点是组成多边形边界的线段的端点。

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

8.8.7. Circles #

圆由中心点和半径表示。类型 circle 的值使用以下任何语法指定:

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

其中 (_xy)_ 是中心点,而 r 是圆的半径。

圆形输出使用第一个语法。