名前

ST_Expand — 入力ジオメトリのバウンディングボックスから全ての方向に拡張されたバウンディングボックスを返します.倍精度浮動小数点数を使います.

概要

geometry ST_Expand(geometry g1, float units_to_expand);

box2d ST_Expand(box2d g1, float units_to_expand);

box3d ST_Expand(box3d g1, float units_to_expand);

説明

この関数は,入力ジオメトリのバウンディングボックスから全ての方向に拡張されたバウンディングボックスを返します.拡張する量は第二引数で指定します.倍精度浮動小数点数を使います.distance()クエリやバウンディングボックスクエリでクエリにインデクスフィルタを追加する際に大変便利です.

この関数には三つの形式があります. 一つ目は,ジオメトリを取り,ポリゴンジオメトリ表現を返すもので,最も一般的な使用形式です.

ST_ExpandはST_bufferに概念的に似ていますが,バッファはジオメトリを全ての方向に拡張し,ST_Expandはバウンディングボックスをx,y,zの単位の量を拡張します.

単位はSRIDで示されている空間参照系の単位です.

[注意]

1.3より前は,ST_Expandは,インデクスクエリを併用するdistance()に使われていました. 形式は the_geom && ST_Expand('POINT(10 20)', 10) AND ST_Distance(the_geom, 'POINT(10 20)') < 10 となります.PostGIS 1.2で,これはST_DWithinと入れ替えられました.

[注意]

全てのジオメトリのバウンディングボックスは,三次元ジオメトリであっても,現在は二次元になります.

[注意]

初出バージョン: 1.5.0でふるまいが変わり,float4座標値から倍精度に代わりました.

[注意]

次に示す例では,メートル単位の投影法である米国 National Atlas 正積図法(SRID=2163)を使っています.

		
--ラインストリングのバウンディングボックスを10メートル拡張
SELECT CAST(ST_Expand(ST_GeomFromText('LINESTRING(2312980 110676,2312923 110701,2312892 110714)', 2163),10) As box2d);
					 st_expand
------------------------------------
 BOX(2312882 110666,2312990 110724)

--三次元ボックスを10メートル拡張
SELECT ST_Expand(CAST('BOX3D(778783 2951741 1,794875 2970042.61545891 10)' As box3d),10)
							  st_expand
-----------------------------------------------------
 BOX3D(778773 2951731 -9,794885 2970052.61545891 20)

 --ポイントを10メートル拡張したAsText表現
 SELECT ST_AsEWKT(ST_Expand(ST_GeomFromEWKT('SRID=2163;POINT(2312980 110676)'),10));
											st_asewkt
-------------------------------------------------------------------------------------------------
 SRID=2163;POLYGON((2312970 110666,2312970 110686,2312990 110686,2312990 110666,2312970 110666))

		

関連情報

ST_AsEWKT, ST_Buffer, ST_DWithin, ST_GeomFromEWKT,ST_GeomFromText, ST_SRID