PostgreSQL 幾何類型

2021-08-26 16:56 更新
8.8.1. 點
8.8.2. 線
8.8.3. 線段
8.8.4. 方框
8.8.5. 路徑
8.8.6. 多邊形
8.8.7. 圓

幾何數(shù)據(jù)類型表示二維的空間物體。表 8.20展示了PostgreSQL中可以用的幾何類型。

表 8.20. 幾何類型

名字存儲尺寸表示描述
point16字節(jié)平面上的點(x,y)
line32字節(jié)無限長的線{A,B,C}
lseg32字節(jié)有限線段((x1,y1),(x2,y2))
box32字節(jié)矩形框((x1,y1),(x2,y2))
path16+16n字節(jié)封閉路徑(類似于多邊形)((x1,y1),...)
path16+16n字節(jié)開放路徑[(x1,y1),...]
polygon40+16n字節(jié)多邊形(類似于封閉路徑)((x1,y1),...)
circle24字節(jié)<(x,y),r>(中心點和半徑)

我們有一系列豐富的函數(shù)和操作符可用來進(jìn)行各種幾何操作, 如縮放、平移、旋轉(zhuǎn)和計算相交等 它們在第 9.11 節(jié)中解釋。

8.8.1. 點

點是幾何類型的基本二維構(gòu)造塊。用下面的語法描述point類型的值:

( x , y )
  x , y

其中xy分別是坐標(biāo),都是浮點數(shù)。

點使用第一種語法輸出。

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) 是方框的對角點。

方框使用第二種語法輸出。

在輸入時可以提供任意兩個對角,但是值將根據(jù)需要被按順序記錄為右上角和左下角。

8.8.5. 路徑

路徑由一系列連接的點組成。路徑可能是開放的,也就是認(rèn)為列表中第一個點和最后一個點沒有被連接起來;也可能是封閉的,這時認(rèn)為第一個和最后一個點被連接起來。

path類型的值用下面的語法聲明:

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

其中的點是組成路徑的線段的端點。方括?。?code class="literal">[])表示一個開放的路徑,圓括?。?code class="literal">())表示一個封閉的路徑。如第三種到第五種語法所示,當(dāng)最外面的圓括號被忽略時,路徑將被假定為封閉。

路徑的輸出使用第一種或第二種語法。

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是圓的半徑。

圓的輸出用第一種語法。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號