★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 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

8.8. 幾何データ型

幾何データ型は2次元空間オブジェクトを表現します。 表 8.20は、PostgreSQLで使用可能な幾何データ型を列挙したものです。

表8.20 幾何データ型

型名格納サイズ説明表現
point16バイト平面における座標点(x,y)
line32バイト無限の直線{A,B,C}
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>(中心と半径)

拡大縮小、平行移動、回転、交点の算出といった様々な幾何学的操作を行う関数と演算子の集合が豊富に揃っています。 このことについては9.11に説明があります。

8.8.1. 座標点

座標点は幾何データ型の基礎となる2次元構成要素です。 point型の値は次の構文のいずれかで指定されます。

( x , y )
  x , y

ここでxyは、それぞれの座標を浮動小数点数数値で表したものです。

座標点は1番目の構文で出力されます。

8.8.2. 直線

直線は線形方程式Ax + By + C = 0で表現されます。ここでABは同時に0になることはありません。 line型の値は以下の書式で入出力されます。

{ A, B, C }

入力のためには以下の書式を代替として使用することもできます。

[ ( x1 , y1 ) , ( x2 , y2 ) ]
( ( x1 , y1 ) , ( x2 , y2 ) )
  ( x1 , y1 ) , ( x2 , y2 )
    x1 , y1   ,   x2 , y2

ここで(x1,y1)(x2,y2)はその直線上の2つの異なる点です。

8.8.3. 線分

線分は終点を示す2つの点の組み合わせで表現されます。 lseg型の値は以下の構文のいずれかで指定されます。

[ ( x1 , y1 ) , ( x2 , y2 ) ]
( ( x1 , y1 ) , ( x2 , y2 ) )
  ( x1 , y1 ) , ( x2 , y2 )
    x1 , y1   ,   x2 , y2

ここで、(x1,y1)(x2,y2)は線分の終端点です。

線分は1番目の構文で出力されます。

8.8.4. 矩形

矩形は、矩形の対角線の両端の座標点の組み合わせで表されます。 box型の値は以下の構文のいずれかで指定されます。

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

ここで(x1,y1)(x2,y2)は矩形の対角線の両端です。

矩形は2番目の構文で出力されます。

任意の対角頂点を入力として指定することができます。 しかし頂点は右上の頂点を最初に、左下の頂点をその後に格納するよう必要に応じて並べ替えられます。

8.8.5. 経路

経路は接続している座標点のリストで表現されます。 経路は最初の座標点と最後の座標点が接続されていないとみなされる開いている状態か、最初の座標点と最後の座標点が接続されているとみなされる閉じた状態かのいずれかです。

path型の値は次の構文のいずれかで指定されます。

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

ここで、各座標点は、経路を構成する線分の終端点です。 大括弧([])は開経路を、括弧(())は閉経路を示します。 3番目から4番目の構文のようにもっとも外側の括弧が省略された場合、閉経路と仮定されます。

経路は最初または2番目の適切な構文で出力されます。

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は円の半径です。

円は最初の構文で出力されます。