支援的版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:開發版
不支援的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

8.8. 幾何類型 #

幾何資料類型表示二維空間物件。表 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 節中進行了解釋。

8.8.1. 點 #

點是幾何類型的基本二維構建模組。 point 類型的值可以使用以下任一語法指定

( x , y )
  x , y

其中 xy 分別是坐標,為浮點數。

點使用第一種語法輸出。

8.8.2. 線 #

線由線性方程式 Ax + By + C = 0 表示,其中 AB 不能同時為零。 line 類型的值以下列形式輸入和輸出

{ A, B, C }

或者,以下任何形式都可以用於輸入

[ ( 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) 是線段的端點。

線段使用第一種語法輸出。

8.8.4. 矩形 #

矩形由作為矩形對角的點對表示。 box 類型的值可以使用以下任一語法指定

( ( x1 , y1 ) , ( x2 , y2 ) )
  ( x1 , y1 ) , ( x2 , y2 )
    x1 , y1   ,   x2 , y2

其中 (x1,y1)(x2,y2) 是矩形的任意兩個對角。

矩形使用第二種語法輸出。

任何兩個對角都可以作為輸入提供,但這些值會根據需要重新排序,以依序儲存右上角和左下角。

8.8.5. 路徑 #

路徑由連接點的清單表示。路徑可以是開放的,其中清單中的第一個點和最後一個點被認為未連接,也可以是封閉的,其中第一個點和最後一個點被認為已連接。

類型為 path 的值可以使用以下任何語法指定

[ ( x1 , y1 ) , ... , ( xn , yn ) ]
( ( x1 , y1 ) , ... , ( xn , yn ) )
  ( x1 , y1 ) , ... , ( xn , yn )
  ( x1 , y1   , ... ,   xn , yn )
    x1 , y1   , ... ,   xn , yn

其中這些點是組成路徑的線段的端點。方括號 ([]) 表示開放路徑,而括號 (()) 表示封閉路徑。如果省略最外面的括號,如第三到第五種語法所示,則假定為封閉路徑。

路徑使用第一種或第二種語法輸出,視情況而定。

8.8.6. 多邊形 #

多邊形由點的列表表示(多邊形的頂點)。多邊形與封閉路徑非常相似;主要的語義差異在於,多邊形被認為包含其內的區域,而路徑則不包含。

多邊形和路徑之間一個重要的實作差異是,多邊形的儲存表示包含其最小邊界框。 這樣可以加速某些搜尋操作,儘管計算邊界框會在建構新多邊形時增加額外負擔。

類型為 polygon 的值可以使用以下任何語法指定

( ( x1 , y1 ) , ... , ( xn , yn ) )
  ( x1 , y1 ) , ... , ( xn , yn )
  ( x1 , y1   , ... ,   xn , yn )
    x1 , y1   , ... ,   xn , yn

其中這些點是組成多邊形邊界的線段的端點。

多邊形使用第一種語法輸出。

8.8.7. 圓形 #

圓形由中心點和半徑表示。 類型為 circle 的值可以使用以下任何語法指定

< ( x , y ) , r >
( ( x , y ) , r )
  ( x , y ) , r
    x , y   , r

其中 (x,y) 是中心點,而 r 是圓形的半徑。

圓形使用第一種語法輸出。

提交更正

如果您在文件中發現任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的內容,請使用此表單來報告文件問題。