カテゴリ:

地理空間関数

ST_BUFFER

入力 GEOMETRY オブジェクトの指定した距離内にあるポイントを含む MultiPolygon を表す GEOMETRY オブジェクトを返します。返されたオブジェクトは、入力オブジェクトの周りの「バッファ」を効果的に表します。

距離に負の値を指定して、入力オブジェクトを「縮小」することもできます。

構文

ST_BUFFER( <geometry_expression> , <distance> )
Copy

引数

geometry_expression

引数は GEOMETRY 型の式でなければなりません。

distance

GEOMETRY オブジェクトからの距離。オブジェクトを「縮小」するには、距離に負の値を指定できます。

戻り値

GEOMETRY オブジェクトを返します。

使用上の注意

  • ST_BUFFER は8つのセグメントを使用して1/4円を概算します。

  • distance が負の値の場合、返されるオブジェクトは入力オブジェクトよりも小さくなります。これを使用して、形状の欠落や間違いを取り除くことができます。

  • LineStrings の場合、エンドキャップと結合のスタイルは常に丸型です。

  • LineStings は常に両側でバッファリングされます。

次の例では、半径1のポイントを囲むポリゴンを返します。

SELECT ST_BUFFER(TO_GEOMETRY('POINT(0 0)'), 1);

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ST_BUFFER(TO_GEOMETRY('POINT(0 0)'), 1) |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| MULTIPOLYGON(((1 0,0.9807852804 -0.195090322,0.9238795325 -0.3826834324,0.8314696123 -0.555570233,0.7071067812 -0.7071067812,0.555570233 -0.8314696123,0.3826834324 -0.9238795325,0.195090322 -0.9807852804,6.123233996e-17 -1,-0.195090322 -0.9807852804,-0.3826834324 -0.9238795325,-0.555570233 -0.8314696123,-0.7071067812 -0.7071067812,-0.8314696123 -0.555570233,-0.9238795325 -0.3826834324,-0.9807852804 -0.195090322,-1 7.657137398e-16,-0.9807852804 0.195090322,-0.9238795325 0.3826834324,-0.8314696123 0.555570233,-0.7071067812 0.7071067812,-0.555570233 0.8314696123,-0.3826834324 0.9238795325,-0.195090322 0.9807852804,2.480838239e-15 1,0.195090322 0.9807852804,0.3826834324 0.9238795325,0.555570233 0.8314696123,0.7071067812 0.7071067812,0.8314696123 0.555570233,0.9238795325 0.3826834324,0.9807852804 0.195090322,1 0))) |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Copy

次の例では、 distance に負の値を使用して、形状から小さな欠落や間違い(スパイクなど)を取り除きます。 TO_GEOMETRY 呼び出しは TRUE を2番目の引数として渡すことに注意してください。これにより、関数は 無効な形状 に対して GEOMETRY オブジェクトを作成できます。

SELECT ST_BUFFER(TO_GEOMETRY('SRID=2261;POLYGON((1540792.21541900 290472.63529214, 1547018.61770388 302537.02285369, 1546965.96550151 302752.51514772, 1547018.61770388 302537.02285369,
1549532.42729914 301257.07398027, 1543327.42218339 289322.60923536, 1540792.21541900 290472.63529214))', True), -1e-08) AS geom;

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                                                                                                                                        GEOM |
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| MULTIPOLYGON(((1543327.42218339 289322.609235373,1540792.21541901 290472.635292145,1547018.61770388 302537.022853677,1549532.42729913 301257.073980266,1543327.42218339 289322.609235373))) |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Copy