幾何データ型は2次元空間オブジェクトを表現します。 表8-20は、PostgreSQLで使用可能な幾何データ型を列挙したものです。 一番の基本となる型はpointで、すべての他の型の基礎を形成します。
表 8-20. 幾何データ型
型名 | 格納サイズ | 表現 | 説明 |
---|---|---|---|
point | 16バイト | 平面における座標点 | (x,y) |
line | 32バイト | 無限の直線(完全には実装されていません) | ((x1,y1),(x2,y2)) |
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>(中心と半径) |
拡大縮小、変形、回転、交点の算出といった様々な幾何学的操作を行う関数と演算子の集合が豊富に揃っています。 このことについては項9.11に説明があります。
座標点は幾何データ型の基礎となる2次元構成要素です。 point型の値は次の構文のいずれかで指定されます。
( x , y ) x , y
ここでxとyは、それぞれの座標を浮動小数点数数値で表したものです。
座標点は1番目の構文で出力されます。
線分(lseg)は座標点の組み合わせで表現されます。 lseg型の値は次の構文のいずれかで指定されます。
[ ( x1 , y1 ) , ( x2 , y2 ) ] ( ( x1 , y1 ) , ( x2 , y2 ) ) ( x1 , y1 ) , ( x2 , y2 ) x1 , y1 , x2 , y2
ここで、(x1,y1)と(x2,y2)は線分の終端点です。
線分は1番目の構文で出力されます。
矩形は、矩形の対角線の両端の座標点の組み合わせで表されます。 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
ここで、各座標点は、経路を構成する線分の終端点です。 大括弧([])は開経路を、括弧(())は閉経路を示します。 3番目から4番目の構文のようにもっとも外側の括弧が省略された場合、閉経路と仮定されます。
経路は最初または2番目の適切な構文で出力されます。
多角形は座標点(多角形の頂点)のリストで表現されます。 多角形は閉経路ととても良く似ていますが、異なった方式で格納されると同時にそれぞれ独自のサポート関数群を持っています。
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は円の半径です。
円は最初の構文で出力されます。