第6章 PostGISリファレンス

目次

6.1. OpenGIS関数
6.1.1. 管理関数
6.1.2. 空間関係関数
6.1.3. ジオメトリ処理関数
6.1.4. ジオメトリアクセサ
6.1.5. ジオメトリ コンストラクタ
6.2. PostGIS独自拡張
6.2.1. 管理関数
6.2.2. 演算子
6.2.3. 計測関数
6.2.4. ジオメトリ出力
6.2.5. ジオメトリ コンストラクタ
6.2.6. ジオメトリエディタ
6.2.7. その他の関数

ここで示す関数はPostGISユーザが必要とすると思われる関数です。この他に、一般的なユーザが使わないPostGISオブジェクトに対して求められるサポート関数があります。

6.1. OpenGIS関数

6.1.1. 管理関数

AddGeometryColumn(varchar, varchar, varchar, integer, varchar, integer)

構文: AddGeometryColumn(<スキーマ名>, <テーブル名>, <カラム名>, <srid>, <タイプ>, <次元>). 存在する属性テーブル (訳注:ジオメトリカラムが存在しない意と思われますが、ジオメトリカラムが既に存在していても追加できます)」にジオメトリカラムを追加します。スキーマ名は、テーブルスキーマの名前です (プリスキーマ版PostgreSQLの場合は使われません)。 sridは、SPATIAL_REF_SYSテーブルに登録されている整数値でなければなりません。 型は、'POLGYON', 'MULTILINESTRING' などのように、常に大文字の文字列で、ジオメトリ型に対応していなければなりません。

DropGeometryColumn(varchar, varchar, varchar)

構文: DropGeometryColumn(<スキーマ名>, <テーブル名>, <カラム名>). ジオメトリカラムを空間テーブルから削除します。 スキーマ名はgeometry_columnsテーブル内にある、そのテーブル名を持つ行のf_schema_nameフィールドと一致しなければならないことに注意して下さい。

SetSRID(geometry)

ジオメトリのSRIDを特定の整数値に設定します。クエリのためのバウンディングボックスを生成する際に使います。

6.1.2. 空間関係関数

Distance(geometry,geometry)

二つのジオメトリ間の2次元距離の最大値を、投影法の単位で返します。

Equals(geometry,geometry)

ジオメトリが「空間的に等価」であるなら1 (TRUE)を返します。 '='より「良い」回答が得られます。equals('LINESTRING(0 0, 10 10)','LINESTRING(0 0, 5 5, 10 10)')は、TRUEになります。

GEOSモジュールによって実現しています。

OGC SPEC s2.1.1.2

Disjoint(geometry,geometry)

ジオメトリが「空間的に接続されていない」なら1 (TRUE)を返します。

GEOSモジュールによって実現しています。

ジオメトリコレクションを引数として呼ばないでください。

ご注意: これは論理値を返して整数を返さないのが「許される」版です。

OGC SPEC s2.1.1.2 //s2.1.13.3 - a.Relate(b, 'FF*FF****')

Intersects(geometry,geometry)

ジオメトリが「空間的にインタセクトしている (訳注:共通領域を持つ)」なら1 (TRUE)を返します。

GEOSモジュールによって実現しています。

ジオメトリコレクションを引数として呼ばないでください。

ご注意: これは論理値を返して整数を返さないのが「許される」版です。

OGC SPEC s2.1.1.2 //s2.1.13.3 - Intersects(g1, g2 ) --> Not (Disjoint(g1, g2 ))

Touches(geometry,geometry)

ジオメトリが「空間的に接触している」なら1 (TRUE)を返します。

GEOSモジュールによって実現しています。

ジオメトリコレクションを引数として呼ばないでください。

ご注意: これは論理値を返して整数を返さないのが「許される」版です。

OGC SPEC s2.1.1.2 // s2.1.13.3- a.Touches(b) -> (I(a) intersection I(b) = {empty set} ) and (a intersection b) not empty

Crosses(geometry,geometry)

ジオメトリが「空間的にクロスしている (訳注:共通領域を持ち、かつ共通領域の次元が引数ジオメトリの最大次元-1」なら1 (TRUE)を返します。

GEOSモジュールによって実現しています。

ジオメトリコレクションを引数として呼ばないでください。

ご注意: これは論理値を返して整数を返さないのが「許される」版です。

OGC SPEC s2.1.1.2 // s2.1.13.3 - a.Relate(b, 'T*T******')

Within(geometry,geometry)

ジオメトリAが「空間的に」ジオメトリB「の中にある」なら1 (TRUE)を返します。

GEOSモジュールによって実現しています。

ジオメトリコレクションを引数として呼ばないでください。

ご注意: これは論理値を返して整数を返さないのが「許される」版です。

OGC SPEC s2.1.1.2 // s2.1.13.3 - a.Relate(b, 'T*F**F***')

Overlaps(geometry,geometry)

ジオメトリが「空間的にオーバラップしている (訳注:共通領域を持ち、引数の2ジオメトリと共通領域が同次元で、かつ共通領域が引数の2ジオメトリと同一でない)」なら1 (TRUE)を返します。

GEOSモジュールによって実現しています。

ジオメトリコレクションを引数として呼ばないでください。

ご注意: これは論理値を返して整数を返さないのが「許される」版です。

OGC SPEC s2.1.1.2 // s2.1.13.3

Contains(geometry,geometry)

ジオメトリAがジオメトリBを「空間的に含んでいる」なら1 (TRUE)を返します。

GEOSモジュールによって実現しています。

ジオメトリコレクションを引数として呼ばないでください。

ご注意: これは論理値を返して整数を返さないのが「許される」版です。

OGC SPEC s2.1.1.2 // s2.1.13.3 - same as within(geometry,geometry)

Intersects(geometry,geometry)

ジオメトリが「空間的にインタセクトしている (訳注:共通領域を持つ)」なら1 (TRUE)を返します。

GEOSモジュールによって実現しています。

ジオメトリコレクションを引数として呼ばないでください。

ご注意: これは論理値を返して整数を返さないのが「許される」版です。

OGC SPEC s2.1.1.2 // s2.1.13.3 - NOT disjoint(geometry,geometry)

Relate(geometry,geometry, intersectionPatternMatrix)

このジオメトリが空間的に、もう一つのジオメトリに関連しているなら1 (TRUE)を返します。 この関連は、intersectionPatternMatrix行列の値によって指定された、 二つのジオメトリの内部、境界、外部の交差要素を見ることで決定されます。

GEOSモジュールによって実現しています。

ジオメトリコレクションを引数として呼ばないでください。

ご注意: これは論理値を返して整数を返さないのが「許される」版です。

OGC SPEC s2.1.1.2 // s2.1.13.3

Relate(geometry,geometry)

DE-9IM (次元拡張された9要素行列)を返します。

GEOSモジュールによって実現しています。

ジオメトリコレクションを引数として呼ばないでください。

OGC仕様にはありませんが実装しました。s2.1.13.2をご覧下さい。

6.1.3. ジオメトリ処理関数

Centroid(geometry)

ジオメトリの重心をポイントとして返します。

GEOSモジュールによって実現されている (コンパイル時に指定されます)なら、より正確に計算できます。

Area(geometry)

ジオメトリがポリゴンかマルチポリゴンならジオメトリの面積を返します。

Length(geometry)

ジオメトリの、組み込まれている空間参照系での曲線長を返します。

これはlength2d()の別名です。

OGC SPEC 2.1.5.1

PointOnSurface(geometry)

表面にあることが保障された点を返します。

GEOSモジュールによって実現しています。

OGC SPEC 3.2.14.2 and 3.2.18.2 -

Boundary(geometry)

ジオメトリの組み合わせ境界の閉包を返します (訳注: ラインストリングは端点、ポリゴンはエッジ、複合オブジェクトは境界のうち奇数番)。組み合わせ境界はOGC仕様の3.12.3.2節に記述されています。結果として出てくる境界は、OGC SPEC 3.12.2で議論されているように、ジオメトリプリミティブを使って表現できます。

GEOSモジュールによって実現しています。

OGC SPEC s2.1.1.1

Buffer(geometry,double,[integer])

ジオメトリからの距離が指定した距離未満となる全てのポイントを示すジオメトリを返します。オプションの第3引数では、4分の1にした円を近似するために使われる弦の数を設定します (デフォルトは8です)。

GEOSモジュールによって実現しています。

ジオメトリコレクションを引数として呼ばないでください。

OGC SPEC s2.1.1.3

ConvexHull(geometry)

ジオメトリの凸包を表現するジオメトリを返します。

GEOSモジュールによって実現しています。

OGC SPEC s2.1.1.3

Intersection(geometry,geometry)

ジオメトリがインタセクトする点を示すジオメトリを返します。

GEOSモジュールによって実現しています。

ジオメトリコレクションを引数として呼ばないでください。

OGC SPEC s2.1.1.3

SymDifference(geometry,geometry)

ジオメトリの対称差 (AとBで共通しない部分)を示すジオメトリを返します。対称と呼ばれるのは、ST_SymDifference(A,B) = ST_SymDifference(B,A)となるからです。

GEOSモジュールによって実現しています。

ジオメトリコレクションを引数として呼ばないでください。

OGC SPEC s2.1.1.3

Difference(geometry,geometry)

ジオメトリの対称差 (AとBで共通しない部分)を示すジオメトリを返します。対称と呼ばれるのは、ST_SymDifference(A,B) = ST_SymDifference(B,A)となるからです。

GEOSモジュールによって実現しています。

ジオメトリコレクションを引数として呼ばないでください。

OGC SPEC s2.1.1.3

GeomUnion(geometry,geometry)

ジオメトリを結合したポイント集合を示すジオメトリを返します。

GEOSモジュールによって実現しています。

ジオメトリコレクションを引数として呼ばないでください。

ご注意: この関数は"union"から名前を変更しました。SQLの予約語であるためです。

OGC SPEC s2.1.1.3

GeomUnion(geometry set)

与えられた集合の全てのジオメトリを結合したポイント集合を示すジオメトリを返します。

GEOSモジュールによって実現しています。

GeometryCollectionを引数集合で呼んではいけません。

OGC仕様では明示的に定義されていません。

MemGeomUnion(geometry set)

上と同じですが、メモリフレンドリ (少ないメモリ使用で長い処理時間)です。

6.1.4. ジオメトリアクセサ

AsText(geometry)

ジオメトリのWell-Known Text表現を返します。たとえばPOLYGON(0 0,0 1,1 1,1 0,0 0)などです。

OGC SPEC s2.1.1.1

AsBinary(geometry)

ジオメトリをOGC"Well-Known Binary"表現で返します。データベースが動いているサーバのエンディアンを使います。これは文字列表現に変換せずにデータをデータベースから引き出すバイナリカーソルに有用です。

OGC SPEC s2.1.1.1 - asBinary(<geometry>,'XDR') and asBinary(<geometry>,'NDR')も参照して下さい

SRID(geometry)

ジオメトリの空間参照系SRIDを整数で返します。

OGC SPEC s2.1.1.1

Dimension(geometry)

このジオメトリオブジェクトの固有の次元です。 ジオメトリオブジェクトは座標の次元以下である必要があります。OGC SPEC s2.1.1.1 - 0ならポイント、1ならライン、2ならポリゴン、ジオメトリコレクションの場合は要素ごとの次元の最大値です。

select dimension('GEOMETRYCOLLECTION(LINESTRING(1 1,0 0),POINT(0 0)'); 
dimension 
-----------
1
Envelope(geometry)

ジオメトリーのバウンディングボックスを表している有効なジオメトリ (POINT、LINESTRINGまたはPOLYGON)を返します。

OGC SPEC s2.1.1.1 -このジオメトリの最小のバウンディングボックスをジオメトリとして返します。ポリゴンはバウンディングボックスの頂点((MINX, MINY), (MAXX, MINY), (MAXX, MAXY), (MINX, MAXY), (MINX, MINY))で定義されます。

ご注意: PostGISはZmin/Zmax座標も同様に加えます。

IsEmpty(geometry)

ジオメトリが空ジオメトリなら1 (TRUE)を返します。 TRUEなら、このジオメトリは空のポイント集合を示すジオメトリ、すなわちGEOMETRYCOLLECTION(EMPTY)です。

OGC SPEC s2.1.1.1

IsSimple(geometry)

ジオメトリが、自己交差、自己接触といった異常な幾何学点を持っていないなら1 (TRUE)を返します。

GEOSモジュールによって実現しています。

OGC SPEC s2.1.1.1

IsClosed(geometry)

開始点と終了点とが同じになっているジオメトリならTRUEを返します。

IsRing(geometry)

この曲線が閉じていて( StartPoint( ) = EndPoint( ) )、この曲線が単純 (2回以上同一点を通過しない)なら1 (TRUE)を返します。

GEOSモジュールによって実現しています。

OGC spec 2.1.5.1

NumGeometries(geometry)

ジオメトリがGEOMETRYCOLLECTION (または MULTI系)の場合はジオメトリ数を返し、そうでないならNULLを返します。

GeometryN(geometry,int)

ジオメトリがGEOMETRYCOLLECTION, MULTIPOINT, MULTILINESTRINGまたはMULTIPOLYGONの場合はN番目のジオメトリを返します。それ以外の場合はNULLを返します。

1が最初のジオメトリです。

NumPoints(geometry)

ジオメトリの最初のラインストリングのポイント数を返します。ジオメトリにラインストリングが無い場合はNULLを返します。

PointN(geometry,integer)

ジオメトリの最初のラインストリングにおける、N番目のポイントを返します。ジオメトリにラインストリングが無い場合はNULLを返します。

ExteriorRing(geometry)

ポリゴンの外環を返します。ジオメトリがポリゴンでない場合はNULLを返します。

NumInteriorRings(geometry)

ジオメトリの最初のポリゴンの内環数を返します。ジオメトリにポリゴンが無い場合はNULLを返します。

InteriorRingN(geometry,integer)

ポリゴンのN番目の内環を返します。ジオメトリがポリゴンでないか、N番が範囲外である場合はNULLを返します。

EndPoint(geometry)

ラインストリングの最後のポイントをポイントで返します。

StartPoint(geometry)

ラインストリングの最初のポイントをポイントで返します。

GeometryType(geometry)

ジオメトリタイプを文字列で返します。たとえば'LINESTRING', 'POLYGON', 'MULTIPOINT'等です。

OGC SPEC s2.1.1.1 - このジオメトリインスタンスがメンバーになっているジオメトリのインスタンス化可能な派生タイプの名前を返します。インスタンス化可能な派生タイプの名前は、文字列として返されます。

X(geometry)

ジオメトリの最初のポイントのX値を探索して返します。ジオメトリにポイントが無い場合はNULLを返します。

Y(geometry)

ジオメトリの最初のポイントのY値を探索して返します。ジオメトリにポイントが無い場合はNULLを返します。

Z(geometry)

ジオメトリの最初のポイントのZ値を探索して返します。ジオメトリにポイントが無い場合はNULLを返します。

6.1.5. ジオメトリ コンストラクタ

GeomFromText(text,[<srid>])

ジオメトリをWKTから作成し、SRIDを与えます。

OGC SPEC 3.2.6.2 - 任意引数SRIDは仕様適合のためです。

PointFromText(text,[<srid>])

ジオメトリをWKTから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

OGC SPEC 3.2.6.2 - 任意引数SRIDは仕様適合のためです。

WKTがポイントでない場合はエラーを投げます。

LineFromText(text,[<srid>])

ジオメトリをWKTから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

OGC SPEC 3.2.6.2 - 任意引数SRIDは仕様適合のためです。

ジオメトリをWKTから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

LinestringFromText(text,[<srid>])

ジオメトリをWKTから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

仕様適合のためです。

ジオメトリをWKTから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

PolyFromText(text,[<srid>])

ジオメトリをWKTから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

OGC SPEC 3.2.6.2 - 任意引数SRIDは仕様適合のためです。

WKTがポリゴンでない場合はエラーを投げます。

PolygonFromText(text,[<srid>])

ジオメトリをWKTから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

仕様適合のためです。

WKTがポリゴンでない場合はエラーを投げます。

MPointFromText(text,[<srid>])

ジオメトリをWKTから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

OGC SPEC 3.2.6.2 - 任意引数SRIDは仕様適合のためです。

WKTがマルチポイントでない場合はエラーを投げます。

MLineFromText(text,[<srid>])

ジオメトリをWKTから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

OGC SPEC 3.2.6.2 - 任意引数SRIDは仕様適合のためです。

WKTがマルチラインストリングでない場合はエラーを投げます。

MPolyFromText(text,[<srid>])

ジオメトリをWKTから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

OGC SPEC 3.2.6.2 - 任意引数SRIDは仕様適合のためです。

WKTがマルチポリゴンでない場合はエラーを投げます。

GeomCollFromText(text,[<srid>])

ジオメトリをWKTから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

OGC SPEC 3.2.6.2 - 任意引数SRIDは仕様適合のためです。

WKTがジオメトリコレクションでない場合はエラーを投げます。

GeomFromWKB(bytea,[<srid>])

ジオメトリをWKBから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

OGC SPEC 3.2.6.2 - 任意引数SRIDは仕様適合のためです。

GeomFromWKB(bytea,[<srid>])

ジオメトリをWKBから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

OGC SPEC 3.2.6.2 - 任意引数SRIDは仕様適合のためです。

PointFromWKB(bytea,[<srid>])

ジオメトリをWKBから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

OGC SPEC 3.2.6.2 - 任意引数SRIDは仕様適合のためです。

WKBがポイントでない場合はエラーを投げます。

LineFromWKB(bytea,[<srid>])

ジオメトリをWKBから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

OGC SPEC 3.2.6.2 - 任意引数SRIDは仕様適合のためです。

WKBがラインストリングでない場合はエラーを投げます。

LinestringFromWKB(bytea,[<srid>])

ジオメトリをWKBから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

仕様適合のためです。

WKBがラインストリングでない場合はエラーを投げます。

PolyFromWKB(bytea,[<srid>])

ジオメトリをWKBから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

OGC SPEC 3.2.6.2 - 任意引数SRIDは仕様適合のためです。

WKBがポリゴンでない場合はエラーを投げます。

PolygonFromWKB(bytea,[<srid>])

ジオメトリをWKBから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

仕様適合のためです。

WKBがポリゴンでない場合はエラーを投げます。

MPointFromWKB(bytea,[<srid>])

ジオメトリをWKBから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

OGC SPEC 3.2.6.2 - 任意引数SRIDは仕様適合のためです。

WKBがマルチポイントでない場合はエラーを投げます。

MLineFromWKB(bytea,[<srid>])

ジオメトリをWKBから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

OGC SPEC 3.2.6.2 - 任意引数SRIDは仕様適合のためです。

WKBがマルチラインストリングでない場合はエラーを投げます。

MPolyFromWKB(bytea,[<srid>])

ジオメトリをWKBから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

OGC SPEC 3.2.6.2 - 任意引数SRIDは仕様適合のためです。

WKBがマルチポリゴンでない場合はエラーを投げます。

GeomCollFromWKB(bytea,[<srid>])

ジオメトリをWKBから作成し、SRIDを与えます。SRIDが与えられない場合は-1をデフォルトで与えます。

OGC SPEC 3.2.6.2 - 任意引数SRIDは仕様適合のためです。

WKBがジオメトリコレクションでない場合はエラーを投げます。

6.2. PostGIS独自拡張

6.2.1. 管理関数

DropGeometryTable([<スキーマ名>], <テーブル名>)

テーブルとgeometry_columnsからの参照を削除します。 ご注意: スキーマ対応版PostgreSQLでは、スキーマが与えられない場合はcurrent_schema()を使います。

UpdateGeometrySRID([<schema_name>], <table_name>, <column_name>, <srid>)

ジオメトリカラムにある全てのフィーチャーのSRIDを更新し、SRIDに関するジオメトリ制限とgeometry_columnsのSRIDを更新します。ご注意: スキーマ対応版PostgreSQLでは、スキーマが与えられない場合はcurrent_schema()を使います。

update_geometry_stats([<table_name>, <column_name>])

クエリプランナが使う、空間テーブルの統計情報を更新します。統計情報収集処理を完全にするためにはには"VACUUM ANALYZE [テーブル名] [カラム名]"も実行する必要があります。ご注意: PostgreSQL 8.0からは統計情報の収集は"VACUUM ANALYZE"で自動的に行われます。

postgis_version()

このデータベースにインストールされたPostGIS関数の版番号を返します (非推奨です。替わりにpostgis_full_version()を使います)。

postgis_lib_version()

PostGISライブラリの版を返します。

postgis_lib_build_date()

PostGISライブラリをビルドした日を返します。

postgis_script_build_date()

PostGISスクリプトをビルドした日を返します。

postgis_scripts_installed()

インストールされたlwpostgis.sqlスクリプトの版番号を返します。

postgis_scripts_released()

インストールされたPostGISライブラリからリリースされたlwpostgis.sqlスクリプトの版番号を返します。

postgis_geos_version()

GEOSライブラリの版を返します。GEOS対応が有効でないならNULLを返します。

postgis_proj_version()

PROJ4ライブラリの版を返します。PROJ4対応が有効でないならNULLを返します。

postgis_uses_stats()

STATSの使用が可能になっているならTRUEを返し、そうでないならFALSEを返します。

postgis_full_version()

完全なPostGISの版情報とコンフィギュレーション情報を報告します。

6.2.2. 演算子

A &< B

"&<"演算子は、AのバウンディングボックスがBのバウンディングボックスとオーバラップしているか左側にある場合にTRUEを返します。

A &> B

"&>"演算子は、AのバウンディングボックスがBのバウンディングボックスとオーバラップしているか右側にある場合にTRUEを返します。

A << B

"<<"演算子は、Aのバウンディングボックスが厳密にBのバウンディングボックスの左側にある場合にTRUEを返します。

A >> B

">>"演算子はAのバウンディングボックスが厳密にBンバウンディングボックスの右側にある場合にTRUEを返します。

A &<| B

"&<|"演算子は、AのバウンディングボックスがBのバウンディングボックスとオーバラップしているか下にある場合にTRUEを返します。

A |&> B

"|&>"演算子は、AのバウンディングボックスがBのバウンディングボックスとオーバラップしているか上にある場合にTRUEを返します。

A <<| B

"<<|"演算子は、Aのバウンディングボックスが厳密にBのバウンディングボックスの下にある場合にTRUEを返します。

A |>> B

"|>>"演算子は、Aのバウンディングボックスが厳密にBのバウンディングボックスの上にある場合にTRUEを返します。

A ~= B

"~="演算子は、「同じ形のもの」演算子です。 二つのジオメトリが実際に幾何学的に等価であるかどうかを見ます。AとBが頂点ごとに見て同じフィーチャーの場合にTRUEを返します。

A @ B

"@"演算子は、Aのバウンディングボックスが完全にBのバウンディングボックスに含まれる場合にTRUEを返します。

A ~ B

"~"演算子は、Aのバウンディングボックスが完全にBのバウンディングボックスを含む場合にTRUEを返します。

A && B

"&&"演算子は、オーバラップ演算子です。AのバウンディングボックスがBのバウンディングボックスをオーバラップする場合にTRUEを返します。

6.2.3. 計測関数

area2d(geometry)

ジオメトリがポリゴンかマルチポリゴンならジオメトリの面積を返します。

distance_sphere(point, point)

緯度経度で示された二点の直線距離をメートルで返します。半径6370986メートルの球体とします。distance_spheroid()より早いですが、精度は落ちます。ポイントについてのみ実装しています。

distance_spheroid(point, point, spheroid)

指定した楕円体を使って、緯度経度で示された2点の直線距離をメートルで返します。length_spheroid()にある楕円体の説明をご覧下さい。現在は、ポイントについてのみ実装しています。

length2d(geometry)

ラインストリングまたはマルチラインストリングの場合に、ジオメトリの2次元の長さを返します。

length3d(geometry)

ラインストリングまたはマルチラインストリングの場合に、ジオメトリの3次元の長さを返します。

length_spheroid(geometry,spheroid)

楕円体上の長さを計算します。この関数は、ジオメトリの座標が緯度経度単位であって、投影変換なしに長さを求めたい場合に有用です。楕円体は別々のデータベースタイプで、次のように構成することができます。

SPHEROID[<名称>,<長軸半径>,<扁平率の逆数>]

Eg:

SPHEROID["GRS_1980",6378137,298.257222101]

計算例は次のようになるでしょう。

SELECT
 length_spheroid(
  geometry_column,
  'SPHEROID["GRS_1980",6378137,298.257222101]'
 )
FROM geometry_table;

length3d_spheroid(geometry,spheroid)

ジオメトリの楕円体上の長さを、標高を考慮して計算します。この関数は、鉛直変動によって加えられる距離を計算するために鉛直座標 (楕円体の軸と同じ単位です)を使うことを除くと、ちょうどlength_spheroidに似ています。

distance(geometry, geometry)

二つのジオメトリ間の最短距離を返します。

max_distance(linestring,linestring)

二つのラインストリング間の最長距離を返します。

perimeter(geometry)

POLYGONまたはMULTIPOLYGONジオメトリの場合に、2次元周囲長を返します。

perimeter2d(geometry)

POLYGONまたはMULTIPOLYGONジオメトリの場合に、2次元周囲長を返します。

perimeter3d(geometry)

POLYGONまたはMULTIPOLYGONジオメトリの場合には、3次元周囲長を返します。

6.2.4. ジオメトリ出力

AsBinary(geometry,{'NDR'|'XDR'})

リトルエンディアン(NDR)またはビッグエンディアン(XDR)を使ったOGC "Well-known-binary"表現をbytea型で返します。この関数は、データをデータベース外に文字列表現を使わずに持ち出すバイナリカーソルで有用です。

AsEWKT(geometry)

ジオメトリのEWKT表現をTEXT型で返します。

AsEWKB(geometry, {'NDR'|'XDR'})

リトルエンディアン (NDR)またはビッグエンディアン (XDR)を使ったEWKB表現をbytea型で返します。

AsSVG(geometry, [rel], [precision])

ジオメトリをSVGパスデータで返します。第2引数に1を指定すると、相対移動によるパスデータ実装を返します。デフォルト (または0指定)では、絶対移動を使います。第3引数は、出力の十進数の最大桁数を減らすために使います (デフォルトは15です)。'rel'が0のときはポイントはcx/cyに、'rel'が1のときはx/yに、それぞれ出力します。

AsGML(geometry, [precision])

ジオメトリをGMLエレメントで返します。第2引数は、出力の最大有効桁数を減らすために使います (デフォルトは15です)。

6.2.5. ジオメトリ コンストラクタ

GeomFromEWKT(text)

EWKBからジオメトリを生成します。

GeomFromEWKB(bytea)

EWKBからジオメトリを生成します。

MakePoint(<x>, <y>, [<z>], [<m>])

2次元、3次元、4次元のポイントジオメトリを生成します。

MakePointM(<x>, <y>, <m>)

XYMのポイントジオメトリを生成します。

MakeBox2D(<LL>, <UR>)

与えられたポイントジオメトリから定義されるBOX2Dを生成します。

MakeBox3D(<LLB>, <URT>)

与えられた3次元ポイントジオメトリから定義されるBOX3Dを生成します。

MakeLine(geometry set)

ポイントジオメトリの集合からラインストリングをひとつ生成します。この集計関数に渡す前に、副問い合わせでポイントを並べ替えると良いかも知れません。

MakeLine(geometry, geometry)

与えられた二つのポイントからラインストリングを生成します。

LineFromMultiPoint(multipoint)

マルチポイントジオメトリからラインストリングを生成します。

AddPoint(linestring, point, [<position>])

ポイントを、ラインストリングの<pos>の位置に追加します。第3引数を省略するか-1を設定すると、末尾に追加します。

MakePolygon(linestring, [linestring[]])

与えられた外周、穴の配列で形作られるポリゴンを生成します。ジオメトリ配列はAccumを使って生成します。 入力ジオメトリは閉じたラインストリングである必要があります (IsClosedGeometryTypeを参照して下さい)。

Polygonize(geometry set)

Aggregate. Creates a GeometryCollection containing possible polygons formed from the costituent linework of a set of geometries. Only available when compiled against GEOS >= 2.1.0.

Collect(geometry set)

ジオメトリの集合からジオメトリコレクションまたはマルチ系オブジェクトを返します。collect()関数はPostgreSQLの用語で言うところの「集計関数」です。これは、sum()やmean()関数と同じようにデータの複数行を扱うということを意味します。たとえば、"SELECT COLLECT(GEOM) FROM GEOMTABLE GROUP BY ATTRCOLUMN"は、ATTRCOLUMNの値ごとに分かれたジオメトリコレクションを返します。

Collect(geometry, geometry)

二つの入力ジオメトリをまとめたジオメトリを返します。出力タイプはMULTI系またはGEOMETRYCOLLECTIONです。

Dump(geometry)

これは集合を返す関数 (SRF=set-returning function)です。ジオメトリ (geom)と整数配列 (path)で作られるgeometry_dump行を返します。入力ジオメトリが単純型 (POINT,LINESTRING,POLYGON)の場合は、単一の行で返り、pathには空配列、geomには入力ジオメトリが入ります。入力ジオメトリがジオメトリコレクションまたはMULTI系の場合は、要素ごとの行で返り、pathはコレクション内の要素位置を表します。

ご注意: この関数はPostgreSQL 7.2.xでビルドした場合には有効ではありません

6.2.6. ジオメトリエディタ

AddBBOX(geometry)

ジオメトリにバウンディングボックスを追加します。これにより、バウンディングボックスに基づく検索が早くなりますが、ジオメトリのサイズが大きくなります。

DropBBOX(geometry)

ジオメトリからバウンディングボックスのキャッシュを削除します。この関数は、ジオメトリのサイズを減らしますが、バウンディングボックスを用いたクエリを遅くします。

Force_collection(geometry)

ジオメトリをジオメトリコレクションに変換します。これはWKB表現を単純化するのに便利です。

Force_2d(geometry)

ジオメトリを「2次元モード」に強制させます。全ての出力表現はXY座標値のみを持つことになります。OGC準拠の出力 (OGCは2次元ジオメトリのみ策定しています)に強制するために使われます。

Force_3dz(geometry), Force_3d(geometry)

ジオメトリをXYZモードに強制します。

Force_3dm(geometry)

ジオメトリをXYMモードに強制します。

Force_4d(geometry)

ジオメトリをXYZMモードに強制します。

Multi(geometry)

マルチ系ジオメトリを返します。ジオメトリが既にマルチ系なら変更せずに返します。

Transform(geometry,integer)

新しいジオメトリを整数値で参照されるSRIDに座標変換します。変換先SRIDはSPATIAL_REF_SYSテーブルに存在するものでなければなりません。

Translate(geometry,float8,float8,float8)

引数の数値をオフセットとして、ジオメトリを新しい位置に変換するものです。すなわち translate(geom,X,Y,Z) となります。

Reverse(geometry)

ジオメトリの頂点の並びを逆順にして返します。

ForceRHR(geometry)

コレクションのポリゴンを右回りに従わせます。

Simplify(geometry, tolerance)

引数のジオメトリをDouglas-Peukerアルゴリズムを使って「単純化した」ものを返します。(マルチ)ラインと(マルチ)ポリゴンでないと実際には動作しませんが、安全にあらゆる種類のジオメトリを引数にできます。単純化はオブジェクトごとに実行されるものですから、ジオメトリコレクションをこの関数に送ることもできます。返されるジオメトリが単純性を失う可能性もあることにご注意ください(IsSimpleを参照して下さい)。

SnapToGrid(geometry, originX, originY, sizeX, sizeY), SnapToGrid(geometry, sizeX, sizeY), SnapToGrid(geometry, size)

引数のジオメトリの全てのポイントを、定義された原点とセルサイズを持つグリッド上にスナップします。 同じセルに落ちた、連続するポイントを削除します。引数ジオメトリのジオメトリタイプを定義できないポイントしか残らなかった場合は、NULLを返します。コレクション内で崩壊したジオメトリはそこから削除されます。返されるジオメトリは単純性を失う可能性がありますのでご注意ください (IsSimpleを参照して下さい)。

Segmentize(geometry, maxlength)

与えられた距離を超えるセグメントを持たないように変更されたジオメトリを返します。差し込まれたポイントはZとM値を (必要なら)持ち、値は0に設定されます。距離計算は2次元でのみ行います。

6.2.7. その他の関数

Summary(geometry)

ジオメトリについての要約文を返します。

box2d(geometry)

ジオメトリの最大範囲を表すBOX2Dを返します。

box3d(geometry)

ジオメトリの最大範囲を表すBOX3Dを返します。

extent(geometry set)

extent()関数はPostgreSQL用語で言うところの「集計関数」です。これは、sum()やmean()と同じ方法でデータリストの操作を行うことを意味します。たとえば、"SELECT EXTENT(GEOM) FROM GEOMTABLE"は、テーブル内の全てのフィーチャーの最大範囲を示すBOX3Dを返します。同様に、"SELECT EXTENT(GEOM) FROM GEOMTABLE GROUP BY CATEGORY"は、カテゴリごとの範囲を返します。

zmflag(geometry)

ジオメトリのZM (次元の意味)フラグをsmall intで返します。値は、0=2次元, 1=M-三次元, 2=Z-3次元, 3=4次元です。

HasBBOX(geometry)

このジオメトリのバウンディングボックスがキャッシュされている場合はTRUEを返し、それ以外の場合はFALSEを返します。キャッシュ制御にはaddBBOX()dropBBOX()を使います。

ndims(geometry)

ジオメトリの座標次元をsmall intで返します。値は2, 3, 4のいずれかです。

nrings(geometry)

ジオメトリがポリゴンまたはマルチポリゴンの場合、リング数を返します。

npoints(geometry)

ジオメトリのポイント (頂点)数を返します。

isvalid(geometry)

ジオメトリが妥当な場合にはTRUEを返します。

expand(geometry, float)

入力ジオメトリのバウンディングボックスから、第2引数で指定される量によって、全ての方向に拡大させたバウンディングボックスを返します。 クエリにインデックスフィルタを追加するdistance()クエリにとても便利です。

estimated_extent([schema], table, geocolumn)

与えられた空間テーブルの「見積もられた」範囲を返します。ジオメトリカラムの統計情報から見積もります。指定されていない場合は現在のスキーマが使われます。

PostgreSQL 8.0.0以上では、統計情報はVACUUM ANALYZEで集められ、結果の範囲は実際の約95%です。

PostgreSQL 8.0.0より前では、統計情報はupdate_geometry_stats()で集められ、範囲は確実です。

find_srid(varchar,varchar,varchar)

この関数の書式はfind_srid(a_db_schema, a_table, a_column)です。GEOMETRY_COLUMNSで検索して、指定したカラムのSRID整数値を返します。ジオメトリカラムがAddGeometryColumn()関数で確実に追加していない場合には、確実には動作しません (訳注: GEOMETRY_COLUMNSビューで確実な登録が確認できていれば良いです)。

mem_size(geometry)

ジオメトリが取る容量 (バイト単位)を返します。

numb_sub_objects(geometry)

ジオメトリに格納されているオブジェクトの数を返します。マルチ系ジオメトリとジオメトリコレクションに使えます。

point_inside_circle(geometry,float,float,float)

この関数の書式はpoint_inside_circle(<geometry>,<circle_center_x>,<circle_center_y>,<radius>)です。ジオメトリがポイントで、かつ指定した円内にある場合はTRUEを返し、それ以外はFALSEを返します。

xmin(box3d) ymin(box3d) zmin(box3d)

バウンディングボックスの、それぞれX,Y,Z軸の最小値を返します。

xmax(box3d) ymax(box3d) zmax(box3d)

バウンディングボックスの、それぞれX,Y,Z軸の最大値を返します。

line_interpolate_point(geometry, proportion)

線に沿った内挿点を返します。第1引数はLINESTRINGでなければなりません。 第2引数は、float型で0から1の区間にある数です。ポイントを返します。

Accum(geometry set)

集約関数です。ジオメトリの配列を生成します。