幾何資料型別表示二維空間物件。 表 8.20 顯示了 PostgreSQL 中可用的幾何型別。
表 8.20. 幾何型別
| 名稱 | 儲存大小 | 描述 | 表示 |
|---|---|---|---|
point |
16 位元組 | 平面上的點 | (x,y) |
line |
24 位元組 | 無限直線 | {A,B,C} |
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 位元組 | 圓 | <(x,y),r> (中心點和半徑) |
在所有這些型別中,單個座標都儲存為 double precision (float8) 數字。
提供了一套豐富的函式和運算子來執行各種幾何操作,例如縮放、平移、旋轉和確定交點。它們在 第 9.11 節 中進行了說明。
點是幾何型別的基本二維構建塊。 point 型別的值可以使用以下任一語法指定:
(x,y)x,y
其中 x 和 y 分別是座標,以浮點數表示。
點使用第一種語法輸出。
線由線性方程 Ax + By + C = 0 表示,其中 A 和 B 不都為零。 line 型別的值以以下形式輸入和輸出:
{ A, B, C }
或者,輸入時可以使用以下任一形式:
[ (x1,y1) , (x2,y2) ] ( (x1,y1) , (x2,y2) ) (x1,y1) , (x2,y2)x1,y1,x2,y2
其中 ( 和 x1,y1)( 是線上的兩個不同點。x2,y2)
線段由作為線段端點的點對錶示。 lseg 型別的值使用以下任一語法指定:
[ (x1,y1) , (x2,y2) ] ( (x1,y1) , (x2,y2) ) (x1,y1) , (x2,y2)x1,y1,x2,y2
其中 ( 和 x1,y1)( 是線段的端點。x2,y2)
線段使用第一種語法輸出。
矩形由作為矩形對角的點對錶示。 box 型別的值使用以下任一語法指定:
( (x1,y1) , (x2,y2) ) (x1,y1) , (x2,y2)x1,y1,x2,y2
其中 ( 和 x1,y1)( 是矩形的任意兩個對角。x2,y2)
矩形使用第二種語法輸出。
輸入時可以提供任意兩個對角,但值將根據需要重新排序,以儲存右上角和左下角,順序如此。
路徑由連線點的列表表示。路徑可以是 開放 的,其中列表中的第一個點和最後一個點被認為不連線;也可以是 閉合 的,其中第一個點和最後一個點被認為連線。
path 型別的值使用以下任一語法指定:
[ (x1,y1) , ... , (xn,yn) ] ( (x1,y1) , ... , (xn,yn) ) (x1,y1) , ... , (xn,yn) (x1,y1, ... ,xn,yn)x1,y1, ... ,xn,yn
其中點是構成路徑的線段的端點。方括號([])表示開放路徑,而圓括號(())表示閉合路徑。當省略最外層的圓括號時,如第三種到第五種語法所示,則假定為閉合路徑。
路徑根據適用情況使用第一種或第二種語法輸出。
多邊形由點列表(多邊形的頂點)表示。多邊形與閉合路徑非常相似;關鍵的語義區別在於,多邊形被認為包含其內部區域,而路徑則不包含。
多邊形和路徑之間的一個重要實現區別在於,多邊形的儲存表示包括其最小邊界框。這可以加速某些搜尋操作,儘管在構造新多邊形時計算邊界框會增加開銷。
polygon 型別的值使用以下任一語法指定:
( (x1,y1) , ... , (xn,yn) ) (x1,y1) , ... , (xn,yn) (x1,y1, ... ,xn,yn)x1,y1, ... ,xn,yn
其中點是構成多邊形邊界的線段的端點。
多邊形使用第一種語法輸出。
圓由中心點和半徑表示。 circle 型別的值使用以下任一語法指定:
< (x,y) ,r> ( (x,y) ,r) (x,y) ,rx,y,r
其中 ( 是中心點,x,y)r 是圓的半徑。
圓使用第一種語法輸出。
如果您在文件中發現任何不正確的內容、與您對特定功能的體驗不符的內容,或者需要進一步澄清的內容,請使用 此表單 報告文件問題。