幾何資料型別表示二維空間物件。 表 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
分別是座標,以浮點數表示。
點使用第一種語法輸出。
線由線性方程 A
x + B
y + 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
) ,r
x
,y
,r
其中 (
是中心點,x
,y
)r
是圓的半徑。
圓使用第一種語法輸出。
如果您在文件中發現任何不正確的內容、與您對特定功能的體驗不符的內容,或者需要進一步澄清的內容,請使用 此表單 報告文件問題。