PostGISの関数

OpenGIS Functions
Management Functions
AddGeometryColumn(varchar, varchar, varchar, integer, varchar, integer)
構文: AddGeometryColumn(<schema_name>, <table_name>, <column_name>, <srid>, <type>, <dimension>). 既存のテーブルにジオメトリーの列を追加します。SridはSPATIAL_REF_SYSテーブルにエントリーされている整数値を使用します。Typeはジオメトリータイプを大文字で指定します(例 'POLYGON'  'MULTILINESTRING')
DropGeometryColumn(varchar, varchar, varchar)
構文: DropGeometryColumn(<schema_name>, <table_name>, <column_name>).ジオメトリー列を削除します。
SetSRID(geometry, integer)
ジオメトリーのSRIDを設定します(integer)
Geometry Relationship Functions
Distance(geometry, geometry)
二つのジオメトリー間のデカルト距離を座標系の単位で返します。
Equals(geometry, geometry)
ジオメトリーが空間的に等しい場合1(TRUE)を返します。例 equals('LINESTRING(0 0, 10 10)','LINESTRING(0 0, 5 5, 10 10)') はtrueとなります。
Disjoint(geometry, geometry)
ジオメトリーが空間的に分離している場合1(TRUE)を返します
ジオメトリーコレクションを引数に取ることはできません
Intersects(geometry, geometry)
ジオメトリーが空間的に交差する場合1(TRUE)を返します
ジオメトリーコレクションを引数に取ることはできません
Touches(geometry, geometry)
ジオメトリーが空間的に接触する場合1(TRUE)を返します
ジオメトリーコレクションを引数に取ることはできません
Crosses(geometry, geometry)
ジオメトリーが空間的にクロスする場合1(TRUE)を返します
ジオメトリーコレクションを引数に取ることはできません
Within(geometry A, geometry B)
AがBに空間的に含まれる場合1(TRUE)を返します
ジオメトリーコレクションを引数に取ることはできません
Overlaps(geometry, geometry)
ジオメトリーが空間的に重なる場合1(TRUE)を返します
ジオメトリーコレクションを引数に取ることはできません
Contains(geometry A, geometry B)
AがBを空間的に完全に含んでいる場合1(TRUE)を返します
ジオメトリーコレクションを引数に取ることはできません
Relate(geometry, geometry, intersectionPatternMatrix)
二つのジオメトリーのInterior,Boundary,Exteriorの間の交差を調べ,intersectionPatternMatrixによって指定された関係にある場合に1を返します
ジオメトリーコレクションを引数に取ることはできません
Geometry Processing Functions
Centroid(geometry)
ジオメトリーの重心をポイントとして返します
Area(geometry)
ジオメトリーの面積を返します
Length(geometry)
ジオメトリーの長さを返します
length2d()と同義
PointOnSurface(geometry)
ジオメトリー上に存在することを保証したポイントを返します
Boundary(geometry)
ジオメトリーの組み合わせ境界の終わりとなるジオメトリーを返します
Buffer(geometry, double, [integer])
ジオメトリーから一定の距離(double)以下のすべてのポイントからなるジオメトリーを返します。ジオメトリーの座標系で計算されます。3番目の引数は1/4円のセグメント数です(既定は8)
ジオメトリーコレクションを引数に取ることはできません
ConvexHull(geometry)
ジオメトリーのconvex hull(ジオメトリーを含む最小の凸集合:凸包)となるジオメトリーを返します
Intersection(geometry, geometry)
ジオメトリーの交差のポイントセットからなるジオメトリーを返します
ジオメトリーコレクションを引数に取ることはできません
SymDifference(geometry A, geometry B)
ジオメトリーの対称差異のポイントセットからなるジオメトリーを返します
ジオメトリーコレクションを引数に取ることはできません
Difference(geometry A, geometry B)
ジオメトリーの差のポイントセットからなるジオメトリーを返します
ジオメトリーコレクションを引数に取ることはできません
GeomUnion(geometry, geometry)
ジオメトリーを結合したポイントセットを返します。
ジオメトリーコレクションを引数に取ることはできません
NOTE: unionからの名称変更(unionがSQLの予約語のため)
GeomUnion(geometry set)
与えられたジオメトリーのセットのすべてを結合したポイントセットのジオメトリーを返します
ジオメトリーコレクションを引数に取ることはできません
MemGeomUnion(geometry set)
GeomUnionと同じですが,使用するメモリーを少なく,CPU時間を多くしたものです。
Geometry Accessors
AsText(geometry)
ジオメトリーの内容をWKT文字列で返します
例: POLYGON(0 0,0 1,1 1,1 0,0 0)
AsBinary(geometry)
OGCのWell-Known-Binary形式でジオメトリーを返します
SRID(geometry)
ジオメトリーのSRIDを返します
Dimension(geometry)
ジオメトリーのDimensionを返します。
ポイント:0 ライン:1 ポリゴン 2  引数がジオメトリーコレクションの場合は最大値を返します
例:
select dimension('GEOMETRYCOLLECTION(LINESTRING(1 1,0 0),POINT(0 0)'); 
dimension 
-----------
1
Envelope(geometry)
ジオメトリーのbounding boxを表すポリゴンを返します。
※Bounding Boxとは,そのジオメトリーを内包する最小の矩形のことです
IsEmpty(geometry)
ジオメトリーがEmpty(空白)の時1(TRUE)を返します。Trueの場合,このジオメトリーは空白のポイントセットを表します
IsSimple(geometry)
ジオメトリに自己交差や自己接触が起きていない場合1(TRUE)を返します
IsClosed(geometry)
ジオメトリーの始点と終点が一致する場合trueを返します
IsRing(geometry)
ジオメトリーの始点と終点が一致しており,かつ同じポイントを2回以上通過しない(単純である)場合に1(TRUE)を返します
NumGeometries(geometry)
ジオメトリーがジオメトリーコレクションかMULTI*(例 MULTIPOLYGON)の場合,ジオメトリーの数を返します。そうでない場合はNullを返します
GeometryN(geometry,int)
ジオメトリーがジオメトリーコレクションかMULTI*の場合,N番目のジオメトリーを返します。そうでない場合はNullを返します
インデックスは1から始まります
NumPoints(geometry)
ジオメトリーの最初のLinestringに含まれるポイントの数を返します。Linestringがない場合はnullを返します
PointN(geometry,integer)
ジオメトリーのlinestringのN番目のポイントを返します。Linestringがない場合はnullを返します
インデックスは1から始まります
ExteriorRing(geometry)
ポリゴンの外部ringを返します。ジオメトリーがポリゴンでない場合はNullを返します。
NumInteriorRings(geometry)
ジオメトリーの最初のポリゴンに含まれる内部ringの個数を返します。ジオメトリーにポリゴンがない場合はNullを返します。
NumInteriorRing(geometry)
NumInteriarRingsと同義
InteriorRingN(geometry,integer)
ポリゴン内のN番目の内部ringを返します。ジオメトリーがポリゴンでない場合またはNが範囲外の場合はnullを返します
インデックスは1から始まります
EndPoint(geometry)
LineStringの終点をポイントで返します
StartPoint(geometry)
LineStringの始点をポイントで返します
GeometryType(geometry)
ジオメトリーのタイプを文字列で返します(例:LINESTRING,POLYGON,MULTIPOINT)
X(geometry)
ポイントのX座標を返します。引数はポイントでなければなりません
Y(geometry)
ポイントのY座標を返します。引数はポイントでなければなりません
Z(geometry)
ポイントのZ座標を返します。Z座標がない場合はnullを返します。引数はポイントでなければなりません
M(geometry)
ポイントのM座標を返します。M座標がない場合はnullを返します。引数はポイントでなければなりません
Geometry Constructors
GeomFromText(text,[<srid>])
WKT文字列からジオメトリーを生成します。座標系をSRIDで指定できます
PointFromText(text,[<srid>])
WKT文字列からポイントジオメトリーを生成します。座標系をSRIDで指定できます。指定されない場合-1となります
WKT文字列がポイントの書式でない場合エラーとなります
LineFromText(text,[<srid>])
WKT文字列からラインジオメトリーを生成します。座標系をSRIDで指定できます。指定されない場合-1となります
WKT文字列がラインの書式でない場合エラーとなります
LinestringFromText(text,[<srid>])
WKT文字列からラインジオメトリーを生成します。座標系をSRIDで指定できます。指定されない場合-1となります
WKT文字列がラインの書式でない場合エラーとなります
PolyFromText(text,[<srid>])
WKT文字列からポリゴンジオメトリーを生成します。座標系をSRIDで指定できます。指定されない場合-1となります
WKT文字列がポリゴンの書式でない場合エラーとなります
PolygonFromText(text,[<srid>])
WKT文字列からポリゴンジオメトリーを生成します。座標系をSRIDで指定できます。指定されない場合-1となります
WKT文字列がポリゴンの書式でない場合エラーとなります
MPointFromText(text,[<srid>])
WKT文字列からMULTIPOINTジオメトリーを生成します。座標系をSRIDで指定できます。指定されない場合-1となります
WKT文字列がMULTIPOINTの書式でない場合エラーとなります
MLineFromText(text,[<srid>])
WKT文字列からMULTILINESTRINGジオメトリーを生成します。座標系をSRIDで指定できます。指定されない場合-1となります
WKT文字列がMULTILINESTRINGの書式でない場合エラーとなります
MPolyFromText(text,[<srid>])
WKT文字列からマルチポリゴンジオメトリーを生成します。座標系をSRIDで指定できます。指定されない場合-1となります
WKT文字列がマルチポリゴンの書式でない場合エラーとなります
GeomCollFromText(text,[<srid>])
WKT文字列からジオメトリーコレクションを生成します。座標系をSRIDで指定できます。指定されない場合-1となります
WKT文字列がジオメトリーコレクションの書式でない場合エラーとなります
GeomFromWKB(bytea,[<srid>])
WKB文字列からジオメトリーを生成します。座標系をSRIDで指定できます
PointFromWKB(bytea,[<srid>])
WKB文字列からポイントジオメトリーを生成します。座標系をSRIDで指定できます。指定されない場合-1となります
WKB文字列がポイントの書式でない場合エラーとなります
LineFromWKB(bytea,[<srid>])
WKB文字列からラインジオメトリーを生成します。座標系をSRIDで指定できます。指定されない場合-1となります
WKB文字列がラインの書式でない場合エラーとなります
LinestringFromWKB(bytea,[<srid>])
WKB文字列からラインジオメトリーを生成します。座標系をSRIDで指定できます。指定されない場合-1となります
WKB文字列がラインの書式でない場合エラーとなります
PolyFromWKB(bytea,[<srid>])
WKB文字列からポリゴンジオメトリーを生成します。座標系をSRIDで指定できます。指定されない場合-1となります
WKB文字列がポリゴンの書式でない場合エラーとなります
PolygonFromWKB(bytea,[<srid>])
WKB文字列からポリゴンジオメトリーを生成します。座標系をSRIDで指定できます。指定されない場合-1となります
WKB文字列がポリゴンの書式でない場合エラーとなります
MPointFromWKB(bytea,[<srid>])
WKB文字列からMULTIPOINTジオメトリーを生成します。座標系をSRIDで指定できます。指定されない場合-1となります
WKB文字列がMULTIPOINTの書式でない場合エラーとなります
MLineFromWKB(bytea,[<srid>])
WKB文字列からMULTILINESTRINGジオメトリーを生成します。座標系をSRIDで指定できます。指定されない場合-1となります
WKB文字列がMULTILINESTRINGの書式でない場合エラーとなります
MPolyFromWKB(bytea,[<srid>])
WKB文字列からマルチポリゴンジオメトリーを生成します。座標系をSRIDで指定できます。指定されない場合-1となります
WKB文字列がマルチポリゴンの書式でない場合エラーとなります
GeomCollFromWKB(bytea,[<srid>])
WKB文字列からジオメトリーコレクションを生成します。座標系をSRIDで指定できます。指定されない場合-1となります
WKB文字列がジオメトリーコレクションの書式でない場合エラーとなります
BdPolyFromText(text WKT, integer SRID)
MultiLinestringをWKTで表記した,閉じたLinestringのコレクションからポリゴンを生成します。
WKTがMULTILINESTRINGの書式でない場合エラーになります。出力がMULTIPOLYGONの場合もエラーになります。その場合BdMPolyFromTextを使うか,BuildArea()を参照してください
BdMPolyFromText(text WKT, integer SRID)
MultiLinestringをWKTで表記した,閉じたLinestringのコレクションからMULTIPOLYGONを生成します。
WKTがMULTILINESTRINGの書式でない場合エラーになります。仮に生成されるポリゴンが実際には一つの場合でも出力は強制的にMULTIPOLYGONになります。その場合にはBdPolyFromTextを使うか,BuildArea()を参照してください
Postgis Extensions
Management Functions
DropGeometryTable([<schema_name>], <table_name>)
テーブルを削除します
UpdateGeometrySRID([<schema_name>], <table_name>, <column_name>, <srid>)
geometry columnのすべてのジオメトリーのSRIDを更新します
update_geometry_stats([<table_name>, <column_name>])
空間テーブルの統計を更新します。(さらにVACUUM ANALYZEを実行することも必要)
postgis_version()
PostGISのバージョンを返します
postgis_lib_version()
PostGISのLibraryのバージョンを返します
postgis_lib_build_date()
PostGISのLibraryがビルドされた日付を返します
postgis_script_build_date()
PostGISのscriptsがビルドされた日付を返します
postgis_scripts_installed()
データベースにインストールされたpostgisのscriptのバージョンを返します
注:もしこの値とpostgis_scripts_releasedの出力とが異なる場合,データベースのアップグレードが正常に行われていないと思われます。
postgis_scripts_released()
lwpostgis.sqlのバージョンを返します。バージョン1.1.0以降はpostgis_lib_version()と同じ値を返します
postgis_geos_version()
GEOSのLibraryのバージョンを返します。GEOSをサポートしていない場合NULLを返します
postgis_jts_version()
JTSのLibraryのバージョンを返します。JTSをサポートしていない場合NULLを返します
postgis_proj_version()
PROJ4のLibraryのバージョンを返します。PROJ4をサポートしていない場合NULLを返します
postgis_uses_stats()
STATSを有効にしている場合TRUEを返します
postgis_full_version()
PostGISのバージョンとビルドに関するすべての情報を返します
Operators
A &< B
Aのbounding boxがBのbounding boxと重なるか,左側にあるときtrueを返します
A &> B
Aのbounding boxがBのbounding boxと重なるか,右側にあるときtrueを返します
A << B
Aのbounding boxが厳密にBのbounding boxの左側にあるときtrueを返します
A >> B
Aのbounding boxが厳密にBのbounding boxの右側にあるときtrueを返します
A &<| B
Aのbounding boxがBのbounding boxと重なるか,下側にあるときtrueを返します
A |&> B
Aのbounding boxがBのbounding boxと重なるか,上側にあるときtrueを返します
A <<| B
Aのbounding boxが厳密にBのbounding boxの下側にあるときtrueを返します
A |>> B
Aのbounding boxが厳密にBのbounding boxの上側にあるときtrueを返します
A ~= B
AとBが地理的に等しいかどうかを調べます。頂点が同じ場合,trueを返します。
A @ B
Aのbounding boxが完全にBのbounding boxに含まれる場合trueを返します
A ~ B
Aのbounding boxが完全にBのbounding boxを含む場合trueを返します
A && B
Aのbounding boxがBのbounding boxと重なるときtrueを返します
Measurement Functions
area2d(geometry)
ジオメトリーがポリゴンかマルチポリゴンである場合に面積を返します
distance_sphere(point, point)
二つの緯度/経度の地点間の距離を,地球を半径6,370,986mの球形として計算します。Distance_spheroidより速く計算できますが,正確さは劣ります
distance_spheroid(point, point, spheroid)
二つの緯度/経度の地点間の距離を,回転楕円体を指定して計算します。Length_spheroidを参照してください
length2d(geometry)
ジオメトリーがラインかMultiLineStringである場合に2次元での長さを返します
length3d(geometry)
ジオメトリーがラインかMultiLineStringである場合に3次元での長さを返します
length_spheroid(geometry,spheroid)
楕円体上の長さを計算します。座標系が経緯度で,投影変換せずに長さを求めたい場合に便利です。楕円体を生成する構文は以下の通りです
SPHEROID[<NAME>,<SEMI-MAJOR AXIS>,<INVERSE FLATTENING>]
SPHEROID["GRS_1980",6378137,298.257222101]
計算例
SELECT
 length_spheroid(
  geometry_column,
  'SPHEROID["GRS_1980",6378137,298.257222101]'
 )
FROM geometry_table;
length3d_spheroid(geometry,spheroid)
楕円体上のジオメトリーの長さを,標高も考慮して計算します
distance(geometry, geometry)
二つのジオメトリー間の距離を返します
max_distance(linestring,linestring)
二つのライン間の最大距離を返します
perimeter(geometry)
ジオメトリーがポリゴンかマルチポリゴンの場合,周囲の長さ(2次元での)を返します
perimeter2d(geometry)
ジオメトリーがポリゴンかマルチポリゴンの場合,周囲の長さ(2次元での)を返します
perimeter3d(geometry)
ジオメトリーがポリゴンかマルチポリゴンの場合,周囲の長さ(3次元での)を返します
azimuth(geometry, geometry)
ポイントによって定義されるセグメントの方位角(radian)を返します。二つのポイントが一致する場合nullを返します
Geometry Outputs
AsBinary(geometry,{'NDR'|'XDR'})
ジオメトリーをWell-Known-Binary形式で返します。Little-endian(NDR) (最下位のバイトから順に記録)またはbig-endian(XDR)(最上位のバイトから順に記録)を用います。文字列に変換することなくデータベースからデータを取り出す際に便利です。
AsEWKT(geometry)
ジオメトリーをEWKT(拡張WKT)形式で返します
AsEWKB(geometry, {'NDR'|'XDR'})
ジオメトリーをEWKB(拡張WKB)形式でlittle-endian(NDR)またはbig-endian(XDR)を用いた並び順に返します
AsHEXEWKB(geometry, {'NDR'|'XDR'})
ジオメトリーをHEXEWKB(16進拡張WKB)形式でlittle-endian(NDR)またはbig-endian(XDR)を用いた並び順に返します
AsSVG(geometry, [rel], [precision])
ジオメトリーをSVG形式のパスとして返します。
AsGML(geometry, [precision])
ジオメトリーをGMLのエレメントとして返します。
Geometry Constructors
GeomFromEWKT(text)
EWKT文字列からジオメトリーを生成します
GeomFromEWKB(bytea)
EWKBからジオメトリーを生成します
MakePoint(<x>, <y>, [<z>], [<m>])
ポイントジオメトリーを生成します
MakePointM(<x>, <y>, <m>)
ポイントジオメトリーを生成します
MakeBox2D(<LL>, <UR>)
LL,URの2点を指定して2次元の矩形を生成します
MakeBox3D(<LLB>, <URT>)
LLB,URTの2点を指定して3次元の直方体を生成します
MakeLine(geometry set)
ポイントジオメトリーのセットからラインを生成します
MakeLine(geometry, geometry)
二つのポイントからラインを生成します
LineFromMultiPoint(multipoint)
MultiPointジオメトリーからラインを生成します
MakePolygon(linestring, [linestring[]])
ラインからポリゴンを生成します。ジオメトリーは閉じたラインでなければなりません。
BuildArea(geometry)
ラインからエリアを生成します。入力するジオメトリーによって出力はポリゴンまたはマルチポリゴンとなります。ポリゴンが形成できないときはNULLを返します。
Polygonize(geometry set)
ジオメトリーのセットから形成し得るポリゴンを含むジオメトリーコレクションを生成します
Collect(geometry set)
ジオメトリーのセットをもとにしたジオメトリーコレクションまたはMULTI*を返します
Collect(geometry, geometry)
二つのジオメトリーからなるジオメトリーコレクションまたはMULTI*を返します
Dump(geometry)
セットを返す関数です。ジオメトリー(geom)と配列(path)からなるGeometry_dump行のセットを返します。入力がポイント,ライン,ポリゴンの時は空の配列と入力のジオメトリーからなる1レコードを返します。入力ジオメトリーがコレクションかMULTI*の時はコレクションの要素のそれぞれについて1レコードを返し,コレクション内の各要素の位置がpathで示されます
DumpRings(geometry)
セットを返す関数です。ジオメトリー(geom)と配列(path)からなるGeometry_dump行のセットを返します。Pathフィールドはポリゴンのリング番号を示します(0は外郭,他はhole)。Geomフィールドはリングがポリゴンとして格納されます
Geometry Editors
AddBBOX(geometry)
ジオメトリーにbounding boxを追加します。Bounding boxに基づくクエリーの速度が上がりますが,ジオメトリーのサイズは増加します
DropBBOX(geometry)
ジオメトリーからbounding boxを削除します。ジオメトリーのサイズは小さくなりますが,Bounding boxに基づくクエリーは遅くなります
AddPoint(linestring, point, [<position>])
ラインの<posiron>番目(0から始まる)のポイントの前にポイントを追加します。
RemovePoint(linestring, offset)
ラインからポイントを削除します。Offsetは0から始まる番号です
SetPoint(linestring, N, point)
N番目のポイントを置換します。Nは0から始まる番号です
Force_collection(geometry)
ジオメトリーをジオメトリーコレクションに変換します。
Force_2d(geometry)
ジオメトリーをXとY座標だけを持つ2次元にします
Force_3dz(geometry), Force_3d(geometry)
ジオメトリーをXYZ座標を持つ3次元にします
Force_3dm(geometry)
ジオメトリーをXYMの3次元にします
Force_4d(geometry)
ジオメトリーをXYZMの4次元にします
Multi(geometry)
ジオメトリーをマルチジオメトリーにします。入力がすでにマルチジオメトリーの時は何も変更しません。
Transform(geometry,integer)
integerの引数に指定したSRIDに座標変換した新たなジオメトリーを返します。SRIDはSPATIAL_REF_SYSテーブルになければなりません。
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   
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   
Translate(geometry,float8,float8,float8)
ジオメトリーを平行移動します。translate(geom, X, Y, Z).
Scale(geometry,float8,float8,float8)
ジオメトリーを拡大縮小します。scale(geom, Xfactor, Yfactor, Zfactor)
RotateZ(geometry,float8), RotateX(geometry,float8), RotateY(geometry,float8), 
ジオメトリーをZ軸,X軸,Y軸を回転軸として,ラジアンで指定した角度だけ回転させます。右手の法則に従います
TransScale(geometry,float8,float8,float8,float8)
まず最初の二つの引数をもとにジオメトリーを平行移動し,残りの二つの引数を使って拡大縮小します。2次元のみです。transscale(geom, X, Y, XFactor, YFactor) は内部で affine(geom, XFactor, 0, 0, 0, YFactor, 0, 0, 0, 1, X*XFactor, Y*YFactor, 0)を呼び出しています
Reverse(geometry)
頂点の順番を逆にしたジオメトリーを返します
ForceRHR(geometry)
右手の法則(頂点の並びに右手の4本の指を合わせた時の親指の向く方向が面の外側になる)にしたがったポリゴンにします
Simplify(geometry, tolerance)
Douglas-Peukerのアルゴリズムを使って単純化したジオメトリーを返します。どんなタイプのジオメトリーでも入力できますが,実際にはラインかポリゴンに対してしか適用されません。オブジェクトごとに単純化するのでジオメトリーコレクションも入力できます。結果のジオメトリーはsimpleでなくなっている(自己交差や自己接触が起きている)こともあります(IsSimple参照)
SnapToGrid(geometry, originX, originY, sizeX, sizeY), SnapToGrid(geometry, sizeX, sizeY), SnapToGrid(geometry, size), 
入力ジオメトリーのすべてのポイントを,原点とセルサイズで規定されたグリッドにスナップします。同じ場所にスナップされるポイントは削除されます。もし出力されたポイントが入力されたジオメトリーと同じタイプを構成するのに十分な数でないとNULLを返します。結果のジオメトリーはsimpleでなくなっている(自己交差や自己接触が起きている)こともあります(IsSimple参照)
SnapToGrid(geometry, geometry, sizeX, sizeY, sizeZ, sizeM)
入力ジオメトリーのすべてのポイントを,原点(ポイント)とセルサイズで規定されたグリッドにスナップします。スナップしたくない次元についてはサイズを0にします
Segmentize(geometry, maxlength)
maxlengthより長いセグメントを持たないように変更されたジオメトリーを返します
LineMerge(geometry)
結合したラインを返します
Linear Referencing
line_interpolate_point(linestring, location)
ラインに沿って挿入したポイントを返します。1番目の引数はLINESTRINGでなければなりません。2番目の引数は,2次元の全長に対するポイントの位置を示す0〜1の値です
line_substring(linestring, start, end)
ラインの一部を返します。全長に対する始点と終点の位置を0〜1の値で指定します。startとendが同じだと,line_interpolate_point()と同じ結果になります
line_locate_point(LineString, Point)
Pointに一番近い,ライン中のポイントの全長に対する位置を0〜1の値で返します
locate_along_measure(geometry, float8)
locate_between_measures(geometry, float8, float8)
その他
Summary(geometry)
ジオメトリーの内容の概要を返します
(例)SELECT summary(the_geom) from gisdata;
summay(text)
------------------------------------
MultiPolygon[BS] with 1 elements  Polygon[] with 1 rings  ring 0 has 133 points
box2d(geometry)
ジオメトリーの最大範囲を表す2次元の矩形のLLとURを返します。
box3d(geometry)
ジオメトリーの最大範囲を表す3次元の直方体のLLBとURTを返します。
extent(geometry set)
統合関数です。"SELECT EXTENT(GEOM)"はテーブル内のすべての図形を含む最大範囲を返し,"SELECT EXTENT(GEOM)・・GROUP BY CATEGORY"だとCATEGORYごとに最大となる範囲を返します
zmflag(geometry)
ジオメトリーの次元(ZM値)を返します。0=2d,1=3dm,2=3dz,3=4d
HasBBOX(geometry)
ジオメトリーのbounding boxがキャッシュされている場合にTrueを返します。addBBOX()とdropBBOXがキャッシュを制御します
ndims(geometry)
ジオメトリーの次元を返します。値は2,3,4です
nrings(geometry)
ジオメトリーがポリゴンかマルチポリゴンの場合にリングの数を返します
npoints(geometry)
ジオメトリーのポイントの数を返します
isvalid(geometry)
ジオメトリーがvalid(有効)な場合にTrueを返します
expand(geometry, float)
入力ジオメトリーのbounding boxを全方向に拡大したbounding boxを返します。
estimated_extent([schema], table, geocolumn)
find_srid(varchar,varchar,varchar)
構文はfind_srid(<db/schema>, <table>, <column>) GEOMETRY_COLUMNテーブルを検索してSRIDを返します。ジオメトリーのフィールドが正しく追加されていない場合は機能しません
mem_size(geometry)
ジオメトリーに使用されているメモリー量(byte)を返します
numb_sub_objects(geometry)
ジオメトリーに格納されているオブジェクトの数を返します
point_inside_circle(geometry,float,float,float)
構文はpoint_inside_circle(<geometry>,<circle_center_x>,<circle_center_y>,<radius>) もしジオメトリーがポイントで,円の内部にあればtrueを返します
xmin(box3d) ymin(box3d) zmin(box3d)
bounding boxのx,y,zの最小値を返します
xmax(box3d) ymax(box3d) zmax(box3d)
bounding boxのx,y,zの最大値を返します
Accum(geometry set)
統合関数です。ジオメトリーの配列を構成します。