幾何データ型は2次元空間オブジェクトを表現します。 表 8.20は、PostgreSQLで使用可能な幾何データ型を列挙したものです。
表8.20 幾何データ型
型名 | 格納サイズ | 説明 | 表現 |
---|---|---|---|
point | 16バイト | 平面における座標点 | (x,y) |
line | 32バイト | 無限の直線 | {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>(中心と半径) |
拡大縮小、平行移動、回転、交点の算出といった様々な幾何学的操作を行う関数と演算子の集合が豊富に揃っています。 このことについては9.11に説明があります。
座標点は幾何データ型の基礎となる2次元構成要素です。
point
型の値は次の構文のいずれかで指定されます。
(x
,y
)x
,y
ここでx
とy
は、それぞれの座標を浮動小数点数数値で表したものです。
座標点は1番目の構文で出力されます。
直線は線形方程式A
x + B
y + C
= 0で表現されます。ここでA
とB
は同時に0になることはありません。
line
型の値は以下の書式で入出力されます。
{A
,B
,C
}
入力のためには以下の書式を代替として使用することもできます。
[ (x1
,y1
) , (x2
,y2
) ] ( (x1
,y1
) , (x2
,y2
) ) (x1
,y1
) , (x2
,y2
)x1
,y1
,x2
,y2
ここで(
とx1
,y1
)(
はその直線上の2つの異なる点です。
x2
,y2
)
線分は終点を示す2つの点の組み合わせで表現されます。
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
)
矩形は2番目の構文で出力されます。
任意の対角頂点を入力として指定することができます。 しかし頂点は右上の頂点を最初に、左下の頂点をその後に格納するよう必要に応じて並べ替えられます。
経路は接続している座標点のリストで表現されます。 経路は最初の座標点と最後の座標点が接続されていないとみなされる開いている状態か、最初の座標点と最後の座標点が接続されているとみなされる閉じた状態かのいずれかです。
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
各座標点は多角形の境界を構成する線分の終端点です。
多角形は最初の構文で出力されます。