On this page
8.8. 几何类型
几何数据类型表示二维空间对象。 Table 8.20显示了 PostgreSQL 中可用的几何类型。
表 8.20. 几何类型
Name | Storage Size | Description | Representation |
---|---|---|---|
point |
16 bytes | 在飞机上点 | (x,y) |
line |
32 bytes | Infinite line | {A,B,C} |
lseg |
32 bytes | 有限线段 | ((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
其中* x
和 y
*是各自的坐标,以浮点数表示。
使用第一种语法输出点。
8.8.2. Lines
线由线性方程* A
* x * B
* y * C
* = 0 表示,其中* A
和 B
*都不都是零。 line
类型的值以以下形式 Importing 和输出:
{ A, B, C }
或者,可以使用以下任何形式的 Importing:
[ ( 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)
是线段的 endpoints。
使用第一种语法输出线段。
8.8.4. Boxes
框由与框的对角相对的点对表示。使用以下任何一种语法来指定类型box
的值:
( ( x1 , y1 ) , ( x2 , y2 ) )
( x1 , y1 ) , ( x2 , y2 )
x1 , y1 , x2 , y2
其中(x1,y1)
和(x2,y2)
是盒子的两个相对角。
使用第二种语法输出框。
可以在 Importing 中提供任意两个相对的角,但是将根据需要对值进行重新排序以按 Sequences 存储右上角和左下角。
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
这些点是组成路径的线段的 endpoints。方括号([]
)表示开放路径,括号(()
)表示封闭路径。当省略最外面的括号时(如第三到第五种语法),则假定为封闭路径。
视情况使用第一或第二语法输出路径。
8.8.6. Polygons
多边形由点列表(多边形的顶点)表示。多边形与封闭路径非常相似,但是它们的存储方式不同,并且具有自己的一组支持例程。
使用以下任何一种语法来指定类型polygon
的值:
( ( x1 , y1 ) , ... , ( xn , yn ) )
( x1 , y1 ) , ... , ( xn , yn )
( x1 , y1 , ... , xn , yn )
x1 , y1 , ... , xn , yn
这些点是组成多边形边界的线段的 endpoints。
使用第一种语法输出多边形。
8.8.7. Circles
圆由中心点和半径表示。使用以下任何一种语法来指定类型circle
的值:
< ( x , y ) , r >
( ( x , y ) , r )
( x , y ) , r
x , y , r
其中(x,y)
是中心点,* r
*是圆的半径。
使用第一种语法输出圆。