ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 8.8\. 几何类型 几何数据类型表示二维的平面物体。[Table 8-20](#calibre_link-2288) 显示了PostgreSQL里面可用的几何类型。 最基本的类型:点,是其它类型的基础。 **Table 8-20\. 几何类型** | 名字 | 存储空间 | 说明 | 表现形式 | | --- | --- | --- | --- | | `point` | 16 字节 | 平面中的点 | (x,y) | | `line` | 32 字节 | (无穷)直线(未完全实现) | ((x1,y1),(x2,y2)) | | `lseg` | 32 字节 | (有限)线段 | ((x1,y1),(x2,y2)) | | `box` | 32 字节 | 矩形 | ((x1,y1),(x2,y2)) | | `path` | 16+16n 字节 | 闭合路径(与多边形类似) | ((x1,y1),...) | | `path` | 16+16n 字节 | 开放路径 | [(x1,y1),...] | | `polygon` | 40+16n 字节 | 多边形(与闭合路径相似) | ((x1,y1),...) | | `circle` | 24 字节 | 圆 | &lt;(x,y),r&gt; (圆心和半径) | 我们有一系列丰富的函数和操作符可用来进行各种几何计算,如拉伸、转换、旋转、计算相交等。 它们在[Section 9.11](#calibre_link-1857)里有解释。 ## 8.8.1\. 点 点是几何类型的基本二维构造单位。用下面语法描述`point`的数值: ``` ( _x_ , _y_ ) _x_ , _y_ ``` 这里的`_x_`和`_y_`是用浮点数表示的点的坐标。 点输出使用第一种语法。 ## 8.8.2\. 线段 线段(`lseg`)是用一对点来代表的。`lseg`的值用下面语法声明: ``` [ ( _x1_ , _y1_ ) , ( _x2_ , _y2_ ) ] ( ( _x1_ , _y1_ ) , ( _x2_ , _y2_ ) ) ( _x1_ , _y1_ ) , ( _x2_ , _y2_ ) _x1_ , _y1_ , _x2_ , _y2_ ``` 这里的`(``_x1_`,`_y1_`) 和`(``_x2_`,`_y2_`)是线段的端点。 线段输出使用第一种语法。 ## 8.8.3\. 矩形 矩形是用一对对角点来表示的。`box`的值用下面语法声明: ``` ( ( _x1_ , _y1_ ) , ( _x2_ , _y2_ ) ) ( _x1_ , _y1_ ) , ( _x2_ , _y2_ ) _x1_ , _y1_ , _x2_ , _y2_ ``` 这里的`(``_x1_`,`_y1_`) 和`(``_x2_`,`_y2_`) 是矩形的一对对角点。 矩形的输出使用第二种语法。 任何两个对角都可以出现在输入中,但按照那样的顺序, 右上角和左下角的值会被重新排序以存储。 ## 8.8.4\. 路径 路径由一系列连接的点组成。路径可能是_开放_的, 也就是认为列表中第一个点和最后一个点没有连接,也可能是_闭合_的, 这时认为第一个和最后一个点连接起来。 `path`的数值用下面语法声明: ``` [ ( _x1_ , _y1_ ) , ... , ( _xn_ , _yn_ ) ] ( ( _x1_ , _y1_ ) , ... , ( _xn_ , _yn_ ) ) ( _x1_ , _y1_ ) , ... , ( _xn_ , _yn_ ) ( _x1_ , _y1_ , ... , _xn_ , _yn_ ) _x1_ , _y1_ , ... , _xn_ , _yn_ ``` 这里的点是组成路径的线段的端点。方括弧(`[]`)表明一个开放的路径, 圆括弧(`()`)表明一个闭合的路径。当最外层的括号被省略, 如在第三至第五语法,会假定一个封闭的路径。 路径的输出使用第一种或第二种语法输出,在适当的时候。 ## 8.8.5\. 多边形 多边形由一系列点代表(多边形的顶点)。多边形可以认为与闭合路径一样,但是存储方式不一样而且有自己的一套支持函数。 `polygon`的数值用下列语法声明: ``` ( ( _x1_ , _y1_ ) , ... , ( _xn_ , _yn_ ) ) ( _x1_ , _y1_ ) , ... , ( _xn_ , _yn_ ) ( _x1_ , _y1_ , ... , _xn_ , _yn_ ) _x1_ , _y1_ , ... , _xn_ , _yn_ ``` 这里的点是多边形的端点。 多边形输出使用第一种语法。 ## 8.8.6\. 圆 圆由一个圆心和半径标识。`circle`的数值用下面语法表示: ``` < ( _x_ , _y_ ) , _r_ > ( ( _x_ , _y_ ) , _r_ ) ( _x_ , _y_ ) , _r_ _x_ , _y_ , _r_ ``` 这里的`(``_x_`,`_y_`) 是圆心,`_r_`是半径。 圆的输出用第一种格式。