すべてのプロダクト
Search
ドキュメントセンター

PolarDB:ST_Buffer

最終更新日:Jul 01, 2024

このトピックでは、ST_Buffer関数について説明します。 この関数は、入力ジオメトリオブジェクトを中心として、入力ジオメトリオブジェクトからの距離が指定された距離以下であるすべての点を表すジオメトリオブジェクトを返します。 返されるジオメトリオブジェクトは、入力ジオメトリオブジェクトを囲むバッファです。 ST_Buffer関数は、指定されたジオメトリオブジェクトの空間参照システム (SRS) に基づいて結果を計算します。

構文

geometry  ST_Buffer(geometry  g1 , float radiusOfBuffer);
geometry  ST_Buffer(geometry g1 , float radiusOfBuffer , integer numSegQuarterCircle);
geometry  ST_Buffer(geometry g1 , float radiusOfBuffer , text bufferStyleParameters);
geography ST_Buffer(geography g1 , float radiusOfBufferInMeters);
geography ST_Buffer(geography g1 , float radiusOfBuffer , integer numSegQuarterCircle);
geography ST_Buffer(geography g1 , float radiusOfBuffer , text bufferStyleParameters);

パラメーター

パラメーター

説明

g1

指定するジオメトリまたは地理オブジェクト。

radiusOfBuffer

バッファの半径。 このパラメーターは、ジオメトリオブジェクトを指定した場合にのみ有効です。

numSegQuarterCircle

4分の1円を近似するために使用されるセグメントの数を指定します。 デフォルト値 : 7

bufferStyleParameters

バッファー。 このパラメーターの値は、スペースで区切られたキーと値のペアです。

radiusOfBufferInMeters

バッファの半径。 単位: メートル。 このパラメーターは、geographyオブジェクトを指定した場合にのみ有効です。

説明

  • ポリゴンオブジェクトを指定し、バッファの半径を負の値に設定した場合、ST_Buffer関数はオブジェクトを拡張するのではなく、ポリゴンオブジェクトをスケーリングします。

  • geographyオブジェクトを指定した場合、バッファの半径は、geographyオブジェクトのSRSで指定された単位で測定されます。

  • geographyオブジェクトを指定した場合、ST_Buffer関数はジオメトリオブジェクトのラッパーになります。 ST_Buffer関数は、まず、地理オブジェクトの境界ボックスに適合する適切な空間参照識別子 (SRID) を選択する。 座標系の場合、ST_Buffer関数は、ユニバーサル横断メルカトル (UTM) 、ランベルト方位角等面積 (LAEA) 、またはユニバーサル極地立体 (UPS) を優先的に使用する。 最悪のシナリオでは、メルカトル投影が使用されます。 次に、ST_Buffer関数は、地理オブジェクトのSRS内のバッファを計算し、バッファを世界測地システム1984 (WGS84) 座標系に変換して戻す。

  • ST_Buffer関数はz座標を無視します。 3Dジオメトリオブジェクトを指定しても、ST_Buffer関数はバッファを表す2Dジオメトリオブジェクトを返します。

  • 場合によっては、半径検索にST_Buffer関数が使用されます。 ただし、半径検索用のバッファを作成すると、検索が遅く無意味になります。 半径検索にはST_DHithin関数を使用することを推奨します。

  • 次の表に、bufferStyleParametersパラメーターのフィールドを示します。

フィールド

説明

データ型

デフォルト値

説明

quad_segs

4分の1円を近似するために使用されるセグメントの数。

integer

8

より大きな値は、より滑らかな四分の一円を示す。

endcap

バッファーのendcapスタイル。The endcap style of the buffer.

String

round

有効な値: round、flat、square。

join

バッファの結合スタイル。The join style of the buffer.

String

round

有効な値: round、mitre、bevel。

mitre_limit

マイター比の限界。

float

5.0

このパラメーターは、joinパラメーターをmitreに設定した場合にのみ有効です。

side

バッファの位置。

String

--

有効な値: 両方、left、right。 このパラメーターを左または右に設定した場合、ST_Buffer関数は、線の方向を基準にしてバッファリングされた側で、入力ジオメトリオブジェクトに対して片面バッファを実行します。 このパラメーターは、LineStringオブジェクトを指定した場合にのみ有効です。 このパラメーターは、ポイントオブジェクトまたはポリゴンオブジェクトの結果には影響しません。

  • quad_segsパラメーターの異なる値で返された結果:

    SELECT ST_Buffer('POINT(0 0)'::geometry,1),ST_Buffer('POINT(3 0)'::geometry,1,'quad_segs=2');

    1

  • endcapパラメーターの異なる値で返される結果:

    SELECT ST_Buffer('LINESTRING(0 0,0 3)'::geometry,1,'endcap=round') 、
                ST_Buffer('LINESTRING(6 0,6 3)'::geometry,1,'endcap=flat') 、
             ST_Buffer('LINESTRING (12 0,12 3)'::geometry,1,'endcap=square'); 

    2

  • 結合パラメータの異なる値で返される結果:

    SELECT ST_Buffer('LINESTRING(0 0,3 0,3 3)'::geometry,1.2,'join=round') 、
             ST_Buffer('LINESTRING(6 0,9 0,9 3)'::geometry,1.2,'join=mitre') 、
             ST_Buffer('LINESTRING (12 0,15 0,15 3)'::geometry,1.2,'join=bevel'); 

    3

  • さまざまな値のmitre_limitパラメーターで返される結果:

    SELECT ST_Buffer('LINESTRING(0 0,3 0,3 3)'::geometry,1.2,'join=mitre mitre_limit=1.0'),
             ST_Buffer('LINESTRING(6 0,9 0,9 3)'::geometry,1.2,'join=mitre mitre_limit=0.5'),
             ST_Buffer('LINESTRING (12 0,15 0,15 3)'::geometry,1.2,'join=mitre mitre_limit=0.1'); 

    4

  • サイドパラメータの異なる値で返される結果:

    SELECT ST_Buffer('LINESTRING(0 0,3 0,3 3,0 3)'::geometry,1,'side=both') 、
           ST_Buffer('LINESTRING(6 0,9 0,9 3,6 3)'::geometry,1,'side=right') 、
           ST_Buffer('LINESTRING (12 0,15 0,15 3,12 3)'::geometry,1,'side=left'); 

    5