8.7. 幾何類型

幾何數據類型表示二維的平面物體. Table 8-16 顯示了PostgreSQL 裡面可以用的幾何類型。 最基本的類型:點,是其他類型的基礎.

Table 8-16. 幾何類型

名字存儲空間描述表現形式
point16 字節空間中一點(x,y)
line32 字節(無窮)直線(未完全實現)((x1,y1),(x2,y2))
lseg32 字節(有限)線段((x1,y1),(x2,y2))
box32 字節長方形((x1,y1),(x2,y2))
path16+16n 字節閉合路徑(與多邊形類似)((x1,y1),...)
path16+16n 字節開放路徑[(x1,y1),...]
polygon40+16n 字節多邊形(與閉合路徑相似)((x1,y1),...)
circle24 字節圓(圓心和半徑)<(x,y),r>

我們有一系列豐富的函數和操作符可用來進行各種幾何計算, 如拉伸,轉換,旋轉和計算相交等。 它們在 Section 9.9 裡有解釋。

8.7.1. Point(點)

點是幾何類型的基本二維構造單位。 用下面語法描述 point 的數值:

( x , y )
  x , y

這裡的參數是 是用浮點數表示的點的 x 坐標和 y 坐標。

8.7.2. 線段

線段 (lseg)是用一對點來代表的. lseg 的值用下面語法聲明:

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

這裡的 (x1,y1)(x2,y2) 是線段的端點。

8.7.3. Box(方)

方是用一對對角點來表示的。 box 的值用下面語法聲明:

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

這裡的 (x1,y1)(x2,y2) 是方形的一對對角點。

方的輸出使用第一種語法.在輸入時將按先右上角後左下角的順序重新排列. 你也可以輸入其他的一對對角點. 但輸入時將先從輸入中和存儲的角中計算出左下角和右上角然後再存儲.

8.7.4. Path(路徑)

路徑由一系列連接的點組成.路徑可能是開放的, 也就是第一個點和最後一個點沒有連接,也可能是閉合 的,這時第一個和最後一個點連接起來.我們提供了函數 popen(p)pclose(p) 來強制路徑是開放的還 是閉合的,可以用函數 isopen(p)isclosed(p) 來在查詢中選擇是那種.

path 的數值用下面語法聲明:

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

這裡的點是 組成路徑的線段的端點。 方括弧([])表明一個開放的路徑,圓括弧(())表明一個閉合的路徑。

路徑的輸出使用第一種語法輸出.

8.7.5. Polygon(多邊形)

多邊形由一系列點代表.多邊形可以認為與閉合路徑一樣, 但是存儲方式不一樣而且有自己的一套支持過程/函數.

polygon 的數值用下列語法聲明:

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

這裡的點是 組成多邊形邊界的線段的端點。

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

8.7.6. Circle(圓)

圓由一個圓心和一個半徑代表. circle 的數值用下面語法表示:

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

這裡的 (x,y) 是 圓心 而r 圓的半徑

圓的輸出用第一種格式.