Table of Contents
ここで示す関数はPostGISユーザが必要とすると思われる関数です。この他に、一般的なユーザが使わないPostGISオブジェクトに対して求められるサポート関数があります。
PostGISは、既存の名前付け方針からSQL-MM中心の方針への切り替えを開始しています。結果として、ユーザが知っていて愛用している関数の多くが標準空間型 (ST) プレフィクスを使うように名前変更されました。以前の関数はまだ有効ですが、更新された等価な関数があるものについては、この文書の一覧から外しています (訳注: 非推奨関数はPostGIS 2.0では基本的に外れています)。これらの関数は非推奨であり、将来のリリースでは削除されますので、*使わないでください*。 |
Abstract
本節では、PostGISによってインストールされるPostgreSQLデータ型を挙げます。特にユーザ定義関数をデザインする際に大変重要なキャストの挙動を記載しています。
ある型が他の型に強制されることをキャストといいます。PostgreSQLは、ほとんどのデータベースと異なり、カスタム型のキャストの挙動と、キャストのために使われる関数を定義することができます。キャストは自動的に指定することができます。この場合は、otherfootypeでしか動作しない関数にmyfooを渡す場合で、自動キャストがある場合には、CAST(myfoo AS otherfootype)やmyfoo::otherfootypeというものを必要としません。
自動キャストの挙動に頼る危険性は、関数をオーバロードするときに出てきます。たとえば、box2dを取るものとbox3dとを取るものがあるけれどもジオメトリをとるものが無いとします。どちらの関数とも、ジオメトリは両方に自動キャストするので、ジオメトリを使って良いことになります。-- しかし、あいまいな関数エラーで終わります。PostgreSQLに強制的に選択させるために、CAST(mygeom As box3d)またはmygeom::box3dを実行します。
少なくともPostgreSQL 8.3では、全て文字列にキャストできます (おそらく、不思議な未知の型のためです)。オブジェクトを文字列にキャストするために表現するキャストの定義は必要ありません。
geometry_columns
に正しく登録されることを確実にします。デフォルトでは、型修飾子によらないジオメトリカラムを型修飾子によるジオメトリカラムに変換します。以前の挙動にするにはuse_typmod=false
とします。LINESTRING
を生成します。LINESTRING
の最後のポイントをPOINT
で返します。POLYGON
の外環を表現するラインストリングを返します。ジオメトリがポリゴンでない場合はNULLを返します。マルチポリゴンでは動作しません。LINESTRING
の始点と終点が一致する場合にTRUE
を返します。多面体サーフェスの場合は閉じているかどうか (ボリュームであるかどうか)を返します。 MULTI*
, GEOMETRYCOLLECTION
, ...)の場合にTRUE
を返します。 LINESTRING
が閉じていて、かつ単純である場合にTRUE
を返します。true
を返します。 LINESTRING
の最初のポイントをPOINT
として返します。TRUE
を返します。TRUE
if a geometry's (cached) 2D bounding box intersects a 2D float precision bounding box (BOX2DF).TRUE
if a 2D float precision bounding box (BOX2DF) intersects a geometry's (cached) 2D bounding box.TRUE
if two 2D float precision bounding boxes (BOX2DF) intersect each other.TRUE
を返します。TRUE
if a geometry's (cached) n-D bounding box intersects a n-D float precision bounding box (GIDX).TRUE
if a n-D float precision bounding box (GIDX) intersects a geometry's (cached) n-D bounding box.TRUE
if two n-D float precision bounding boxes (GIDX) intersect each other.TRUE
を返します。TRUE
を返します。TRUE
を返します。TRUE
を返します。TRUE
を返します。TRUE
を返します。倍精度浮動小数点数のバウンディングボックスを使います。TRUE
を返します。TRUE
を返します。TRUE
if a geometry's 2D bounding box is contained into a 2D float precision bounding box (BOX2DF).TRUE
if a 2D float precision bounding box (BOX2DF) is contained into a geometry's 2D bounding box.TRUE
if a 2D float precision bounding box (BOX2DF) is contained into another 2D float precision bounding box.TRUE
を返します。TRUE
を返します。TRUE
を返します。TRUE
if a geometry's 2D bonding box contains a 2D float precision bounding box (GIDX).TRUE
if a 2D float precision bounding box (BOX2DF) contains a geometry's 2D bonding box.TRUE
if a 2D float precision bounding box (BOX2DF) contains another 2D float precision bounding box (BOX2DF).TRUE
を返します。ST_Length
の別名です。POINT
を返します。POINT
を返します。TRUE
を返します。Abstract
SFCGALは、高度な2次元と3次元の関数を提供するCGALのC++ラッパです。堅牢性のために、ジオメトリの座標は正確な有理数表現を持ちます。
このライブラリのインストール手順は、SFCGALウェブページhttp://www.sfcgal.org/にあります。関数をロードするには、CREATE EXTENSION postgis_sfcgal;
とします。
SFCGAL関数には標準の関数を置き換えるものがあります (ST_Intersects, ST_Intersection, ST_Difference, ST_Union, ST_Area, ST_Distance)。標準の関数とSFCGAL関数とを切り替えるには、次の二つのいずれかを実行します。
SET postgis.backend = sfcgal;
および
SET postgis.backend = geos;
geometry_dump
行の集合を返します。true
を返します。 このモジュールとPL/pgSQL関数は、Web Feature Service仕様で求められているロングロックに対応しています。
serializable transaction levelを使わなければなりません。さもなくばロック機構が壊れます。 |
ここで示す関数は、データが何らかの理由で破損した場合にだけ使われる、使用頻度の低い関数です。これらの関数は破損のトラブルシューティングと通常の環境では決して起こらないことを訂正するために使われます。