第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. 線型参照
6.2.8. その他の関数
6.2.9. Long Transactions support
6.3. SQL-MM関数
6.4. ArcSDE関数

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

注記

PostGISは、既存の名前付け方針からSQL-MM中心の方針への切り替えを開始しています。結果として、ユーザが知っていて愛用している関数の多くが標準空間型 (ST)プレフィクスを使うように名前変更されました。 以前の関数はまだ有効ですが、更新された等価な関数があるものについては、この文書の一覧から外しています。これらの関数は、将来のリリースでは非推奨になります。

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フィールドと一致しなければならないことに注意して下さい。

Probe_Geometry_Columns()

PostGISジオメトリ制約 (訳注: カラム型がジオメトリ型でSRID制約とgeometrytype制約を持つカラム)を持つテーブルの全てをスキャンして、まだgeometry_columnsテーブルに存在しない場合には、geometry_columnsに追加します。また、挿入数、既存数または廃止カラム数の統計を与えます。

ST_SetSRID(geometry, integer)

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

6.1.2. 空間関係関数

ST_Distance(geometry, geometry)

投影された単位での二つのジオメトリの間のデカルト距離を返します。インデクスは使いません。

ST_DWithin(geometry, geometry, float)

ジオメトリ間の距離が指定した距離以内ならtrueを返します。インデクスがあるならインデクスを使います。

ST_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

ST_Disjoint(geometry, geometry)

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

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

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

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

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

ST_Intersects(geometry, geometry)

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

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

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

この関数には、自動的に、ジオメトリに付けられたインデックスを使ったバウンディングボックス比較を含みます。インデックスの使用を避けたいなら、_ST_Intersectsを使います。

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

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

ST_Touches(geometry, geometry)

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

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

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

この関数には、自動的に、ジオメトリに付けられたインデックスを使ったバウンディングボックス比較を含みます。インデックスの使用を避けたいなら、_ST_Touchesを使います

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

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

ST_Crosses(geometry, geometry)

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

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

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

この関数には、自動的に、ジオメトリに付けられたインデックスを使ったバウンディングボックス比較を含みます。インデックスの使用を避けたいなら、_ST_Crossesを使います

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

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

ST_Within(geometry A, geometry B)

ジオメトリAがジオメトリB「の中に空間的にいる」なら1 (TRUE)を返します。Aは完全にBの内部にいなければなりません。

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

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

この関数の呼び出しによって、ジオメトリで使用可能なインデックスを使用したバウンディングボックスの比較が自動的に行われます。インデックスの使用を避けるには_ST_Withinを使います。

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

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

ST_Overlaps(geometry, geometry)

ジオメトリが「空間的にオーバラップしている」なら1 (TRUE)を返します。

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

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

この関数の呼び出しによって、ジオメトリで使用可能なインデクスを使用したバウンディングボックスの比較が自動的に行われます。インデクスの使用を避けるには_ST_Overlapsを使います。

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

OGC SPEC s2.1.1.2 // s2.1.13.3

ST_Contains(geometry A, geometry B)

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

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

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

この関数の呼び出しによって、ジオメトリで使用可能なインデクスを使用したバウンディングボックスの比較が自動的に行われます。インデクスの使用を避けるには、_ST_Containsを使います。

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

OGC SPEC s2.1.1.2 // s2.1.13.3 - within(geometry B, geometry A)と同じ

ST_Covers(geometry A, geometry B)

ジオメトリBにジオメトリAの外となるポイントが無い場合には、1 (TRUE)を返します。

この関数の必要性についてはhttp://lin-ear-th-inking.blogspot.com/2007/06/subtleties-of-ogc-covers-spatial.htmlを参照して下さい。

この関数の呼び出しによって、ジオメトリで使用可能なインデックスを使用したバウンディングボックスの比較が自動的に行われます。インデックスの使用を避けるには、_ST_Coversを使います。

ST_CoveredBy(geometry A, geometry B)

ジオメトリAにジオメトリBの外となるポイントが無い場合には、1 (TRUE)を返します。

この関数の必要性についてはhttp://lin-ear-th-inking.blogspot.com/2007/06/subtleties-of-ogc-covers-spatial.htmlを参照して下さい。

ST_Intersects(geometry, geometry)

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

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

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

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

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

ST_Relate(geometry, geometry, intersectionPatternMatrix)

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

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

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

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

OGC SPEC s2.1.1.2 // s2.1.13.3

ST_Relate(geometry, geometry)

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

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

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

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

6.1.3. ジオメトリ処理関数

ST_Centroid(geometry)

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

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

ST_Area(geometry)

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

ST_Length(geometry)

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

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

OGC SPEC 2.1.5.1

ST_PointOnSurface(geometry)

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

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

OGC SPEC 3.2.14.2 and 3.2.18.2 -

ST_Boundary(geometry)

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

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

OGC SPEC s2.1.1.1

ST_Buffer(geometry, double, [integer])

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

GEOSモジュールで実現しています。

OGC SPEC s2.1.1.3

ST_ConvexHull(geometry)

凸包(convex hull)は与えられた集合の全てのジオメトリを含む最小の閉じたジオメトリです (訳注: 板に何本も釘を刺して外側から輪ゴムをかけた様子を想像して下さい。釘がジオメトリを示し、輪ゴムを境界とした作られる図形が凸包です)。

通常は、マルチ系ジオメトリとジオメトリコレクションで使われます。この関数は集計関数ではありませんが、ポイントの集合の凸包を得るために、ST_ConvexHull(ST_Collect(somepointfield))のようにST_Collectと併用して使います。この併用は、次のように、観測したポイントの集合をもとに影響を受ける領域を決定するためにしばしば使われます。

SELECT d.disease_type, ST_ConvexHull(ST_Collect(d.the_geom)) As the_geom 
        FROM disease_obs As d 
        GROUP BY d.disease_type

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

OGC SPEC s2.1.1.3

ST_Intersection(geometry, geometry)

ジオメトリのインタセクションとなる点集合を表現するジオメトリを返します。

言い換えると、ジオメトリAとジオメトリBとで共有されている部分のことです。

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

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

OGC SPEC s2.1.1.3

ST_Shift_Longitude(geometry)

ジオメトリの全ての地物の全てのポイント/頂点を読み、経度値が0より小さい場合には360を足します。結果は、180度を中心にした地図に描画される、経度が0-360の区間にあるデータです。

1.3.4より前ではMULTIPOINTでは動作しない誤りがありました。1.3.4以上ではMULTIPOINTでも動作します。

ST_SymDifference(geometry A, geometry B)

AとBの、インタセクトしていない部分を表現するジオメトリを返します。対称と呼ばれるのは、ST_SymDifference(A,B) = ST_SymDifference(B,A) となるからです。

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

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

OGC SPEC s2.1.1.3

ST_Difference(geometry A, geometry B)

ジオメトリBにインタセクトしないジオメトリAの部分を表現するジオメトリを返します。

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

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

OGC SPEC s2.1.1.3

ST_Union(geometry, geometry)

ジオメトリの結合の点集合を表現するジオメトリを返します。

GEOSモジュールで実現しています。

ジオメトリコレクションを引数として呼んではなりません。

ご注意: この関数は以前は、"Union"から名称変更してGeomUnion()と呼ばれていました。UNIONはSQLの予約語であるためです。

OGC SPEC s2.1.1.3

ST_Union(geometry set)

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

GEOSモジュールで実現しています。

ジオメトリコレクションを引数集合で呼んではなりません。

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

ST_MemUnion(geometry set)

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

6.1.4. ジオメトリアクセサ

ST_AsText(geometry)

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

OGC SPEC s2.1.1.1

ST_AsBinary(geometry)

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

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

ST_SRID(geometry)

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

OGC SPEC s2.1.1.1

ST_Dimension(geometry)

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

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

ジオメトリーのバウンディングボックスを表している有効なジオメトリ(POINT、LINESTRINGまたはPOLYGON)を返します。縮退した場合(垂直線、点)は、POLYGONより低い次元のジオメトリを返します。

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

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

ST_IsEmpty(geometry)

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

OGC SPEC s2.1.1.1

ST_IsSimple(geometry)

Returns 1 (TRUE) if this Geometry has no anomalous geometric points, such as self intersection or self tangency.

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

OGC SPEC s2.1.1.1

ST_IsClosed(geometry)

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

ST_IsRing(geometry)

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

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

OGC spec 2.1.5.1

ST_NumGeometries(geometry)

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

ST_GeometryN(geometry,int)

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

注記

OGC仕様のため0.8.0版からインデクスを1始まりにしています。これより前の版では0始まりになっています。

ST_NumPoints(geometry)

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

ST_PointN(geometry,integer)

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

注記

OGC仕様のため0.8.0版からインデクスを1始まりにしています。これより前の版では0始まりになっています。

ST_ExteriorRing(geometry)

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

ST_NumInteriorRings(geometry)

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

ST_NumInteriorRing(geometry)

NumInteriorRings(geometry)の別名です。OpenGIS仕様では、関数の名前付けについてあいまいであるため、両方のスペリングの関数を提供しています。

ST_InteriorRingN(geometry,integer)

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

注記

OGC仕様のため0.8.0版からインデクスを1始まりにしています。これより前の版では0始まりになっています。

ST_EndPoint(geometry)

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

ST_StartPoint(geometry)

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

GeometryType(geometry)

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

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

注記

この関数は、'POINTM'等が返るので、ジオメトリがM値を持っているかどうかも示します。

ST_GeometryType(geometry)

ジオメトリタイプを文字列で返します。たとえば、'Linestring', 'Polygon' 等です。この関数は、GeometryType(geometry)と異なり、ジオメトリが計測された (訳注:「M座標を持つ」という意味)かどうかを示さず、また、返される文字列の大文字小文字の差があります。

ST_X(geometry)

ポイントのX座標値を返します。引数はポイントでなければなりません。

ST_Y(geometry)

ポイントのY座標値を返します。引数はポイントでなければなりません。

ST_Z(geometry)

ポイントのZ座標値を返し、Z座標が無い場合はNULLを返します。引数はポイントでなければなりません。

ST_M(geometry)

ポイントのM座標値を返し、M座標が無い場合はNULLを返します。引数はポイントでなければなりません。

注記

これは (いまだに)OGC仕様に入っていませんが、ポイント座標抽出関数のリストを完全にするために挙げています。

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

ST_GeomFromText(text,[<srid>])

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

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

ST_PointFromText(text,[<srid>])

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

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

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

ST_LineFromText(text,[<srid>])

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

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

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

ST_LinestringFromText(text,[<srid>])

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

仕様適合のためです。

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

ST_PolyFromText(text,[<srid>])

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

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

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

ST_PolygonFromText(text,[<srid>])

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

仕様適合のためです。

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

ST_MPointFromText(text,[<srid>])

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

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

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

ST_MLineFromText(text,[<srid>])

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

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

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

ST_MPolyFromText(text,[<srid>])

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

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

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

ST_GeomCollFromText(text,[<srid>])

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

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

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

ST_GeomFromWKB(bytea,[<srid>])

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

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

ST_GeometryFromWKB(bytea,[<srid>])

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

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

ST_PointFromWKB(bytea,[<srid>])

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

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

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

ST_LineFromWKB(bytea,[<srid>])

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

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

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

ST_LinestringFromWKB(bytea,[<srid>])

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

仕様適合のためです。

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

ST_PolyFromWKB(bytea,[<srid>])

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

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

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

ST_PolygonFromWKB(bytea,[<srid>])

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

仕様適合のためです。

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

ST_MPointFromWKB(bytea,[<srid>])

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

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

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

ST_MLineFromWKB(bytea,[<srid>])

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

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

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

ST_MPolyFromWKB(bytea,[<srid>])

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

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

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

ST_GeomCollFromWKB(bytea,[<srid>])

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

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

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

ST_BdPolyFromText(text WKT, integer SRID)

マルチラインストリングのテキスト表現で示された、任意の閉じたラインストリングのコレクションで作られたポリゴンを生成します。

WKTがマルチラインストリングでないならエラーを投げます。出力がマルチポリゴンならエラーを投げるので、その場合はBdMPolyFromTextを使うか、PostGIS独自のアプローチのBuildArea()をご覧下さい。

OGC SFSQL 1.1 - 3.2.6.2

Availability: 1.1.0 - GEOS 2.1.0以上が必要です。

ST_BdMPolyFromText(text WKT, integer SRID)

マルチラインストリングのテキスト表現で示された、任意の閉じたラインストリングのコレクションで作られたマルチポリゴンを生成します。

WKTがマルチラインストリングでないならエラーを投げます。結果が本当に一つだけのポリゴンであったとしても、マルチポリゴンで出力します。一つだけのポリゴンが返ってくるのが確実でしたら、BdPolyFromTextを使うか、PostGIS独自のアプローチであるBuildArea()をご覧下さい。

OGC SFSQL 1.1 - 3.2.6.2

Availability: 1.1.0 - GEOS 2.1.0以上が必要です。

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の版番号とコンパイルオプションを返します。

注記

1.1.0版より前では、これはプロシージャだったので、不正確な情報が返る可能性があります (不完全なデータベースアップグレードを行った場合)。

postgis_lib_version()

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

Availability: 0.9.0

postgis_lib_build_date()

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

Availability: 1.0.0RC1

postgis_script_build_date()

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

Availability: 1.0.0RC1

postgis_scripts_installed()

このデータベースにインストールしたPostGISスクリプトの版を返します。

注記

この関数の出力とpostgis_scripts_released()の出力が一致しない場合、既存データベースの完全なアップグレードに失敗しているかも知れません。詳細については、アップグレードの節をご覧下さい。

Availability: 0.9.0

postgis_scripts_released()

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

注記

1.1.0からは、この関数はpostgis_lib_version()と同じ値を返します。後方互換のために維持されます。

Availability: 0.9.0

postgis_geos_version()

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

Availability: 0.9.0

postgis_jts_version()

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

Availability: 1.1.0

postgis_proj_version()

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

Availability: 0.9.0

postgis_uses_stats()

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

Availability: 0.9.0

postgis_full_version()

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

Availability: 0.9.0

6.2.2. 演算子

A = B

"="演算子は、AのバウンダリボックスがBのバウンダリボックスが同じならTRUEを返します。

注記

この演算子は、多くの混乱を引き起こします。ジオメトリA=ジオメトリBの比較を実行すると、バウンダリボックスが同じならジオメトリが明らかに異なっていてもtrueを返します。本当に同等であるかをチェックするには、ST_OrderingEqualsまたはST_Equalsを使用して下さい。

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. 計測関数

ST_Area(geometry)

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

ST_distance_sphere(point, point)

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

ST_distance_spheroid(point, point, spheroid)

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

ST_length2d(geometry)

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

ST_length3d(geometry)

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

ST_length_spheroid(geometry,spheroid)

回転楕円体上の長さを計算します。この関数は、ジオメトリの座標が経度/緯度であって、投影変換を行わずに長さを求めたい場合に使います。回転楕円体は別々のデータベースタイプで、次のように構成されています。

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

例:

SPHEROID["GRS_1980",6378137,298.257222101]

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

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

ST_length3d_spheroid(geometry,spheroid)

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

ST_distance(geometry, geometry)

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

ST_max_distance(linestring,linestring)

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

ST_perimeter(geometry)

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

ST_perimeter2d(geometry)

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

ST_perimeter3d(geometry)

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

ST_azimuth(geometry, geometry)

与えられたポイントからなる線分の方位をラジアンで返します。二点が同位置にある場合はNULLを返します。

Availability: 1.1.0

6.2.4. ジオメトリ出力

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

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

ST_AsEWKT(geometry)

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

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

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

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

ジオメトリのHEXEWKB表現を (文字列として)返します。リトルエンディアン (NDR)またはビッグエンディアン (XDR)のどちらかのエンコーディングを使います。

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

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

ST_AsGML([version], geometry, [precision])

ジオメトリをGMLエレメントで返します。version引数は、指定する場合は2または3にすることができます。version引数を指定しない場合は、デフォルトを2と仮定します。第3引数は、出力の最大有効桁数を減らすために使います (デフォルトは15です)。

ST_AsKML([version], geometry, [precision])

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

注記

PostGISがProj対応でコンパイルされている必要があります。PostGIS_Full_Version()を使ってProj対応でコンパイルされているか確認して下さい。

ST_AsGeoJson([version], geometry, [precision], [options])

ジオメトリをGeoJsonエレメントで返します (GeoJson specifications 1.0参照)。2次元および3次元のジオメトリの両方ともサポートされています。GeoJsonはSFS 1.1ジオメトリタイプのみサポートされています (たとえば曲線はサポートされていません)。

version引数は、指定する場合には常に1でなければなりません。

第3引数は、出力の最大有効桁数を減らすために使われることがあります (デフォルトは15です)。

最後の"options"引数は、GeoJSON出力にBBoxまたはCRSを追加するために使われます。次のようにします。

  • 0: オプションなし (デフォルト値)

  • 1: GeoJson CRS

  • 2: GeoJson Bbox

  • 3: GeoJson Bbox および CRS の両方

GeoJson CRSパターンは、spatial_ref_sysテーブルからauth_name:auth_sridという形式で生成されます (例えば "EPSG:4326")。

Availability: 1.3.4

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

ST_GeomFromEWKT(text)

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

ST_GeomFromEWKB(bytea)

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

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

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

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

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

ST_MakeBox2D(<LL>, <UR>)

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

ST_MakeBox3D(<LLB>, <URT>)

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

ST_MakeLine(geometry set)

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

ST_MakeLine(geometry, geometry)

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

ST_LineFromMultiPoint(multipoint)

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

ST_MakePolygon(linestring, [linestring[]])

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

ST_BuildArea(geometry)

与えられたジオメトリの構成する線によって形成される面ジオメトリを生成します。返り値は、入力に応じて、ポリゴンまたはマルチポリゴンになります。入力がポリゴンを形成できない場合はNULLを返します。

標準OGCインタフェースを持つ関数へのラッパーであるBdPolyFromTextBdMPolyFromTextを参照してください。

Availability: 1.1.0 - GEOS 2.1.0以上が必要です。

ST_Polygonize(geometry set)

集約関数。ジオメトリの集合のラインから形成されうるポリゴンを含むジオメトリコレクションを生成します。

Availability: 1.0.0RC1 - GEOS 2.1.0が必要です。

ST_Collect(geometry set)

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

ST_CollectとST_Unionはしばしば交換して使うことができます。ST_Collectはバウンダリを消そうとしないので一般的にST_Unionよりも桁違いに早く動きます。ST_Collectは、単に、シングルジオメトリをマルチ系ジオメトリに巻き込み、マルチ系ジオメトリまたはジオメトリ型混在の集合をジオメトリコレクションに巻き込む、ということを行っているだけです。不幸なことに、GISツールはジオメトリコレクションを十分にサポートしていません。マルチ系ジオメトリを集める時にST_Collectがジオメトリコレクションを返すのを防ぐために、次に示すように、ST_Dumpでマルチ系ジオメトリをシングル系ジオメトリに展開したうえで再グループ化するというトリックを使うことができます。

Thread ref: http://postgis.refractions.net/pipermail/postgis-users/2008-June/020331.html
SELECT stusps, 
           ST_Multi(ST_Collect(f.the_geom)) as singlegeom  
         FROM (SELECT stusps, (ST_Dump(the_geom)).geom As the_geom 
                                FROM
                                somestatetable ) As f
GROUP BY stusps
                          
ST_Collect(geometry, geometry)

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

ST_Dump(geometry)

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

ST_Dumpはジオメトリを展開するのに使えます。新しい行を作る点では、GROUP BYの逆です。たとえば、MULTIPOLYGONをPOLYGONに展開するために使われます。

SELECT sometable.*, (ST_Dump(the_geom)).geom As the_geom 
         FROM somestatetable
                          

Availability: PostGIS 1.0.0RC1 PostgreSQL 7.3以上が必要です。

ST_DumpRings(geometry)

この関数は、集合を返す関数 (set-returning function=SRF)です。ジオメトリ (geom)と整数配列 (path)からなるgeometry_dump行の集合を返します。入力ジオメトリがシンプルタイプ (ポイント、ラインストリング、ポリゴン)の場合、pathが空で、geomが入力ジオメトリであるレコード1行が返ります。入力ジオメトリがコレクションまたはマルチ系の場合、コレクションの要素ごとにレコードが返り、この行については、pathはコレクション内の要素位置が入ります。

Availability: PostGIS 1.1.3 PostgreSQL 7.3以上が必要です。

6.2.6. ジオメトリエディタ

ST_AddBBOX(geometry)

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

ST_DropBBOX(geometry)

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

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

ポイントを、ラインストリングの<pos>番目 (0はじまり)のポイントの前に追加します。第3引数を省略するか-1を設定すると、末尾に追加します。

ST_RemovePoint(linestring, offset)

ラインストリングからポイントを削除します。offsetの値は0はじまりです。

Availability: 1.1.0

ST_SetPoint(linestring, N, point)

ラインストリングのN番目 (0はじまり)の点を引数のポイントに置き換えます。

Availability: 1.1.0

ST_Force_collection(geometry)

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

ST_Force_2d(geometry)

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

ST_Force_3dz(geometry), ST_Force_3d(geometry)

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

ST_Force_3dm(geometry)

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

ST_Force_4d(geometry)

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

ST_Multi(geometry)

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

ST_Transform(geometry,integer)

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

注記

PostGISがProj対応でコンパイルされている必要があります。PostGIS_Full_Version()を使ってProj対応でコンパイルされているか確認して下さい。

ST_Affine(geometry, float8, float8, float8, float8, float8, float8, float8, float8, float8, float8, float8, float8)

ジオメトリに対して3次元アフィン変換をかけます。次の関数を実行したとします。

Affine(geom, a, b, c, d, e, f, g, h, i, xoff, yoff, zoff) 

これは、次のような変換行列を示します。

/ a  b  c  xoff \ 
| d  e  f  yoff | 
| g  h  i  zoff | 
\ 0  0  0     1 /

頂点は、次のように変換されます。

x' = a*x + b*y + c*z + xoff 
y' = d*x + e*y + f*z + yoff 
z' = g*x + h*y + i*z + zoff

これ以降の全ての移動、拡大関数はこのようなアフィン変換で表現されます。

Availability: 1.1.2.

ST_Affine(geometry, float8, float8, float8, float8, float8, float8)

ジオメトリに2次元アフィン変換をかけます。次の関数を実行したとします。

Affine(geom, a, b, d, e, xoff, yoff)

これは、次のような変換行列を示します。

/  a  b  0  xoff  \       /  a  b  xoff  \ 
|  d  e  0  yoff  | rsp.  |  d  e  yoff  | 
|  0  0  1     0  |       \  0  0     1  / 
\  0  0  0     1  /

頂点は、次のように変換されます。

x' = a*x + b*y + xoff 
y' = d*x + e*y + yoff 
z' = z 

この関数は3次元アフィン変換を特殊化したものです。

Availability: 1.1.2.

ST_Translate(geometry, float8, float8, float8)

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

ST_Scale(geometry, float8, float8, float8)

ジオメトリを引数で指定された軸に対する乗数により新しいサイズに拡大縮小します。すなわちscale(geom,Xfactor,Yfactor,Zfactor)となります。

Availability: 1.1.0

ST_RotateZ(geometry, float8), ST_RotateX(geometry, float8), ST_RotateY(geometry, float8)

ジオメトリをZ, XまたはY軸を中心に、与えられたラジアン角度分回転させます。右手系に従います。

Availability: 1.1.2.

ST_TransScale(geometry, float8, float8, float8, float8)

まず前の二つのfloatを使ってジオメトリを移動させ、後の二つのfloatを使って拡大縮小を行います。これは2次元のみです。transscale(geom, X, Y, XFactor, YFactor)を呼んだ場合、内部ではaffine(geom, XFactor, 0, 0, 0, YFactor, 0, 0, 0, 1, X*XFactor, Y*YFactor, 0)を呼びます。

Availability: 1.1.0.

ST_Reverse(geometry)

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

ST_ForceRHR(geometry)

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

ST_Simplify(geometry, tolerance)

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

ST_SimplifyPreserveTopology(geometry, tolerance)

Douglas-Peukerを使って「単純化した」ものを返します。無効な派生ジオメトリ (特にポリゴン)の生成を避けます。

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

引数のジオメトリの全てのポイントを、定義された原点とセルサイズを持つグリッド上にスナップします。同じセルに落ちた、連続するポイントを削除します。引数ジオメトリのジオメトリタイプを定義できないポイントしか残らなかった場合は、NULLを返します。コレクション内で崩壊したジオメトリはそこから削除されます。

注記

返されるジオメトリは単純性を失う可能性があります (IsSimpleを参照して下さい)。

注記

1.1.0版より前では、この関数は常に2次元ジオメトリを返しました。1.1.0版からは、返されるジオメトリの次元数は、入力値のうちで手のつけられていない最大の次元と同じになります。全てのグリッドの次元を定義するには、第2引数にジオメトリを取る形式を使って下さい。

Availability: 1.0.0RC1

ST_SnapToGrid(geometry, geometry, sizeX, sizeY, sizeZ, sizeM)

引数ジオメトリの全てのポイントを原点 (第2引数で、これはポイントでなければなりません)とセルサイズで定義されたグリッドにスナップします。スナップを行いたくない次元があれば、その次元のサイズを0にして下さい。

Availability: 1.1.0

ST_Segmentize(geometry, maxlength)

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

ST_LineMerge(geometry)

引数ジオメトリを構成する線をまとめ合わせることで形成されるラインストリング (またはその集合)を返します。

Availability: 1.1.0 - GEOS 2.1.0以上が必要です。

6.2.7. 線型参照

ST_line_interpolate_point(linestring, location)

線に沿った内挿点を返します。第1引数はLINESTRINGでなければなりません。第2引数は、float8型で0から1の区間にある数でなければならず、返り値ポイントが置かれる位置ラインストリングの2次元線長の合計に対する割合です。

ポイントに最も近い線を計算するにはline_locate_point()を参照して下さい。

注記

1.1.1から、この関数はM軸やZ軸の内挿点も (存在するなら)計算するようになりました。それより前の版では0.0となります。

Availability: 0.8.2

ST_line_substring(linestring, start, end)

次元長に対する割合で示された開始位置と終了位置で切り取られた部分ラインストリングを返します。第2引数と第3引数は、float8で0から1の区間です。

'start'と'end'が同じ値を持つ場合は、この関数はline_interpolate_point()と等価です。

ポイントに最も近い線を計算するにはline_locate_point()を参照して下さい。

注記

1.1.1から、この関数はM軸やZ軸の内挿点も (存在するなら)計算するようになりました。それより前の版では不定値となります。

Availability: 1.1.0

ST_line_locate_point(LineString, Point)

引数で示されたポイントに最も近いラインストリング上の点の、2次元長の合計に対する割合を、0から1までの値で返します。

ポイント(line_interpolate_point)またはラインストリング(line_substring)を抽出するために、この関数から返された位置を使うことができます。

Availability: 1.1.0

ST_locate_along_measure(geometry, float8)

M値に一致する要素からなる、ジオメトリコレクションから派生した型の値を返します。ポリゴン要素には対応しません。

意味は ISO/IEC CD 13249-3:200x(E) - Text for Continuation CD Editing Meeting で決められています。

Availability: 1.1.0

ST_locate_between_measures(geometry, float8, float8)

指定したM値の範囲内にある要素からなる、派生ジオメトリコレクション値を返します。ポリゴン要素には対応していません。

意味は ISO/IEC CD 13249-3:200x(E) - Text for Continuation CD Editing Meeting で決められています。

Availability: 1.1.0

6.2.8. その他の関数

ST_Summary(geometry)

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

ST_box2d(geometry)

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

ST_box3d(geometry)

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

ST_extent(geometry set)

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

ST_zmflag(geometry)

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

ST_HasBBOX(geometry)

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

ST_ndims(geometry)

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

ST_nrings(geometry)

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

ST_npoints(geometry)

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

ST_isvalid(geometry)

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

ST_expand(geometry, float)

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

ST_estimated_extent([schema], table, geocolumn)

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

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

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

ST_find_srid(varchar,varchar,varchar)

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

ST_mem_size(geometry)

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

ST_point_inside_circle(geometry, float, float, float)

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

ST_XMin(box3d) ST_YMin(box3d) ST_ZMin(box3d)

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

ST_XMax(box3d) ST_YMax(box3d) ST_ZMax(box3d)

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

ST_Accum(geometry set)

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

6.2.9. Long Transactions support

This module and associated pl/pgsql functions have been implemented to provide long locking support required by Web Feature Service specification.

注記

Users must use serializable transaction level otherwise locking mechanism would break.

EnableLongTransactions()

Enable long transaction support. This function creates the required metadata tables, needs to be called once before using the other functions in this section. Calling it twice is harmless.

Availability: 1.1.3

DisableLongTransactions()

Disable long transaction support. This function removes the long transaction support metadata tables, and drops all triggers attached to lock-checked tables.

Availability: 1.1.3

CheckAuth([<schema>], <table>, <rowid_col>)

Check updates and deletes of rows in given table for being authorized. Identify rows using <rowid_col> column.

Availability: 1.1.3

LockRow([<schema>], <table>, <rowid>, <authid>, [<expires>])

Set lock/authorization for specific row in table <authid> is a text value, <expires> is a timestamp defaulting to now()+1hour. Returns 1 if lock has been assigned, 0 otherwise (already locked by other auth)

Availability: 1.1.3

UnlockRows(<authid>)

Remove all locks held by specified authorization id. Returns the number of locks released.

Availability: 1.1.3

AddAuth(<authid>)

Add an authorization token to be used in current transaction.

Availability: 1.1.3

6.3. SQL-MM関数

ここでは、SQL-MMで定義されている、PostGISで現在サポートしている関数を示します。これらの関数の実装はArcSDE実装に続くもので、このため、仕様とずれているものがあります。これらのずれについては注意書きを付けていくものとします。

1.2.0版では、これらの関数はPostGIS関数のラッパーとして実装されています。結果、曲線ジオメトリの完全なサポートは多くの関数にとって適切な位置づけにないかも知れません。

注記

SQL-MMでは、全てのジオメトリコンストラクタのSRIDのデフォルトは0と定義されていますが、PostGISでは-1としています。

ST_Area

ST_SurfaceまたはST_MultiSurface値の面積計測を返します。

SQL-MM 3: 8.1.2, 9.5.3

ST_AsBinary

ST_Geometry値のWell-Known Binary表現を返します。

SQL-MM 3: 5.1.37

ST_AsText

ST_Geometry値のWell-Known Text表現を返します。

SQL-MM 3: 5.1.25

ST_Boundary

ST_Geometry値の境界を返します。

SQL-MM 3: 5.1.14

ST_Buffer

ST_Geometry値のバッファを返します。

SQL-MM 3: 5.1.17

ST_Centroid

ST_SurfaceまたはST_MultiSurface値の数学的重心を返します。

SQL-MM 3: 8.1.4, 9.5.5

ST_Contains

ST_Geometry値が空間的にもうひとつのST_Geometry値を含むかを見ます。

SQL-MM 3: 5.1.31

ST_ConvexHull

凸包 (convex hull)は与えられた集合の全てのジオメトリを含む最小の閉じたジオメトリです。

通常は、マルチ系ジオメトリとジオメトリコレクションで使われます。この関数は集計関数ではありませんが、ポイントの集合の凸包を得るために、ST_ConvexHull(ST_Collect(somepointfield))のようにST_Collectと併用して使います。この併用は、次のように、観測したポイントの集合をもとに影響を受ける領域を決定するためにしばしば使われます。

SQL-MM 3: 5.1.16

ST_CoordDim

ST_Geometry値の座標次元を返します。

SQL-MM 3: 5.1.3

ST_Crosses

ST_Geometry値が空間的にもうひとつのST_Geometry値とクロスするかを見ます。

SQL-MM 3: 5.1.29

ST_Difference

ふたつのST_Geometry値の差となるポイント集合を示すST_Geometry値を返します。

SQL-MM 3: 5.1.20

ST_Dimension

ST_Geometry値の次元を返します。

SQL-MM 3: 5.1.2

ST_Disjoint

ST_Geometry値の次元を返します。

SQL-MM 3: 5.1.26

ST_Distance

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

SQL-MM 3: 5.1.23

ST_EndPoint

ST_Curve値の最後のST_Point値を返します。

SQL-MM 3: 7.1.4

ST_Envelope

ST_Geometryのバウンディング長方形を返します。

SQL-MM 3: 5.1.15

ST_Equals

ST_Geometry値がもうひとつのST_Geometry値と空間的に等価であるかを見ます。

SQL-MM 3: 5.1.24

ST_ExteriorRing

ST_Surfaceの外環を返します。

SQL-MM 3: 8.2.3, 8.3.3

ST_GeometryN

ST_GeomCollectionから指定されたST_Geometry値を返します。

SQL-MM 3: 9.1.5

ST_GeometryType

ST_Geometry値のジオメトリ型を返します。

SQL-MM 3: 5.1.4

ST_GeomFromText

指定したST_Geometry値を返します。

SQL-MM 3: 5.1.40

ST_GeomFromWKB

指定したST_Geometry値を返します。

SQL-MM 3: 5.1.41

ST_InteriorRingN

ST_Surface値の指定した内環を返します。

SQL-MM 3: 8.2.6, 8.3.5

ST_Intersection

二つのST_Geometry値のインタセクトしたポイントの集合を表現するST_Geometry値を返します。

言い換えると、ジオメトリAとジオメトリBとで共有されている部分のことです。

SQL-MM 3: 5.1.18

ST_Intersects

ST_Geometry値がもう一つのST_Geometry値と空間的にインタセクトするかを見ます。

SQL-MM 3: 5.1.27

ST_IsClosed

ST_CurveまたはST_MultiCurve値が閉じているかを見ます。

注記

SQL-MMでは、ST_IsClosed(NULL)の返り値は0になると定義されていますが、PostGISではNULLを返します。

SQL-MM 3: 7.1.5, 9.3.3

ST_IsEmpty

ST_Geometry値が空集合に相当するかを見ます。

注記

SQL-MMでは、ST_IsEmpty(NULL)は0を返しますが、PostGISではNULLを返します。

SQL-MM 3: 5.1.7

ST_IsRing

ST_Curve値が環になっているかを見ます。

注記

SQL-MMでは、ST_IsRing(NULL)の返り値は0になると定義されていますが、PostGISではNULLを返します。

SQL-MM 3: 7.1.6

ST_IsSimple

ST_Geometry値が、自己交差や自己接触をするといった、変則的なポイントを持たないかを見ます。

注記

SQL-MMでは、ST_IsSimple(NULL)は0を返しますが、PostGISではNULLを返します。

SQL-MM 3: 5.1.8

ST_IsValid

ST_Geometry値が整形されているかを見ます。

注記

SQL-MMでは、ST_IsValid(NULL)は0を返しますが、PostGISではNULLを返します。

SQL-MMでは、ST_IsValid(NULL)の返り値は1になると定義されています

SQL-MM 3: 5.1.9

ST_Length

ST_CurveまたはST_MultiCurve値の計測された長さを返します。

SQL-MM 3: 7.1.2, 9.3.4

ST_LineFromText

指定したST_LineString値を返します。

SQL-MM 3: 7.2.8

ST_LineFromWKB

指定したST_LineString値を返します。

SQL-MM 3: 7.2.9

ST_MLineFromText

指定したST_MultiLineString値を返します。

SQL-MM 3: 9.4.4

ST_MLineFromWKB

指定したST_MultiLineString値を返します。

SQL-MM 3: 9.4.5

ST_MPointFromText

指定したST_MultiPoint値を返します。

SQL-MM 3: 9.2.4

ST_MPointFromWKB

指定したST_MultiPoint値を返します。

SQL-MM 3: 9.2.5

ST_MPolyFromText

指定したST_MultiPolygon値を返します。

SQL-MM 3: 9.6.4

ST_MPolyFromWKB

指定したST_MultiPolygon値を返します。

SQL-MM 3: 9.6.5

ST_NumGeometries

指定したST_GeomCollectionを返します。

SQL-MM 3: 9.1.4

ST_NumInteriorRing

ST_Surfaceの内環数を返します。

SQL-MM 3: 8.2.5

ST_NumPoints

ST_LineStringまたはST_CircularStringのポイント数を返します。

SQL-MM 3: 7.2.4

ST_OrderingEquals

二つのジオメトリを比較して、二つのジオメトリが等価で、かつ座標が同じ並び順ならt (TRUE)を返し、そうでないならf (FALSE)を返します。

注記

この関数は、SQL-MM仕様ではなくArcSDE SQL仕様に従って実装しています。http://edndoc.esri.com/arcsde/9.1/sql_api/sqlapi3.htm#ST_OrderingEqualsをご覧ください。

SQL-MM 3: 5.1.43

ST_Overlaps

ST_Geometry値がもうひとつのST_Geometry値に空間的にオーバラップしているかを見ます。

SQL-MM 3: 5.1.32

ST_Perimeter

ST_SurfaceまたはST_MultiSurface値の境界の計測された長さを返します。

SQL-MM 3: 8.1.3, 9.5.4

ST_Point

指定した座標値からST_Pointを返します。

SQL-MM 3: 6.1.2

ST_PointFromText

指定したST_Point値を返します。

SQL-MM 3: 6.1.8

ST_PointFromWKB

指定したST_Point値を返します。

SQL-MM 3: 6.1.9

ST_PointN

ST_LineStringまたはST_CircularStringの中にある、指定したST_Point値を返します。

SQL-MM 3: 7.2.5, 7.3.5

ST_PointOnSurface

ST_SurfaceまたはST_MultiSurface値と空間的に共通領域を持つことを保証されたST_Pointを返します。

SQL-MM 3: 8.1.5, 9.5.6

ST_PolyFromText

指定したST_Polygon値を返します。

SQL-MM 3: 8.3.6

ST_PolyFromWKB

指定したST_Polygon値を返します。

SQL-MM 3: 8.3.7

ST_Polygon

指定したラインストリングとSRIDからST_Polygon値を返します。

SQL-MM 3: 8.3.2

ST_Relate

ST_Geometry値がもうひとつのST_Geomaetry値に空間的に関連があるかを見ます。

SQL-MM 3: 5.1.25

ST_SRID

ST_Geometry値の空間参照系識別子を返します。

SQL-MM 3: 5.1.5

ST_StartPoint

ST_Curve値の最初のポイントをST_Point値で返します。

SQL-MM 3: 7.1.3

ST_SymDifference

二つのST_Geometryの対称差をポイント集合で表現したST_Geometry値を返します。

SQL-MM 3: 5.1.21

ST_Touches

ST_Geometry値がもうひとつのST_Geometry値に空間的に接触しているかを見ます。

SQL-MM 3: 5.1.28

ST_Transform

指定した空間参照系に変換したST_Geometry値を返します。

SQL-MM 3: 5.1.6

ST_Union

二つのST_Geometry値の結合のポイント集合を表すST_Geomety値を返します。

SQL-MM 3: 5.1.19

ST_Within

ST_Geometry値が、空間的にもう一つのST_Geometry値の中にあるかを見ます。

SQL-MM 3: 5.1.30

ST_WKBToSQL

Well-Known Binary表現で与えられたST_Geometry値を返します。

SQL-MM 3: 5.1.36

ST_WKTToSQL

Well-Known Text表現で与えられたST_Geometry値を返します。

SQL-MM 3: 5.1.34

ST_X

ST_Point値のX値を返します。

SQL-MM 3: 6.1.3

ST_Y

ST_Point値のY値を返します。

SQL-MM 3: 6.1.4

6.4. ArcSDE関数

ArcSDEスタイルのインタフェースへの対応を良くするために関数が追加されています。

SE_EnvelopesIntersect

二つのジオメトリのエンベロープが共通部分を持つ場合はt (TRUE)を、そうでない場合はf (FALSE)を返します。

SE_Is3d

ジオメトリ値がZ値を持っているかを見ます。

SE_IsMeasured

ジオメトリ値がM値を持っているかを見ます。

SE_LocateAlong

指定したM値に一致する要素からなる、ジオメトリコレクションから派生した型の値を返します。

SE_LocateBetween

指定したM値の範囲と一致した要素からなる、ジオメトリコレクションから派生した型の値を返します。

SE_M

ST_Point値のM値を返します。

SE_Z

ST_Point値のZ値を返します。