幾何資料類型表示二維空間物件。表 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 節中進行了解釋。
線由線性方程式 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
是圓形的半徑。
圓形使用第一種語法輸出。
如果您在文件中發現任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的內容,請使用此表單來報告文件問題。