- カテゴリ:
ST_SIMPLIFY¶
線またはポリゴンを表す入力 GEOGRAPHY または GEOMETRY オブジェクトを指定すると、オブジェクトのより単純な近似を返します。この関数は、選択された頂点を識別して削除するため、頂点の少ない同様のオブジェクトが生成されます。
たとえば、入力オブジェクトが50個の頂点を持つポリゴンである場合、ST_SIMPLIFY はこれらの頂点の内、20個のみを持つ単純なポリゴンを返すことができます。
オブジェクトを簡略化する場合、この関数は頂点を削除し、その頂点の削除によって生じたエッジとエッジの間の距離が指定された許容範囲内にある場合にのみ、その頂点を削除します。
構文¶
ST_SIMPLIFY( <geography_expression>, <tolerance> [ , <preserve_collapsed> ] )
ST_SIMPLIFY( <geometry_expression>, <tolerance> )
引数¶
必須:
geography_expression
. OR .geometry_expression
単純化する GEOGRAPHY または GEOMETRY オブジェクト。
GEOGRAPHY または GEOMETRY オブジェクトの型に応じて、ST_SIMPLIFY には次の効果があります。
オブジェクトの型
ST_SIMPLIFY の効果
LineString、 MultiLineString、ポリゴン、または MultiPolygon
ST_SIMPLIFY による単純化アルゴリズムの適用
ポイントまたは MultiPoint
ST_SIMPLIFY は、効果がありません。
GeometryCollection または FeatureCollection
GEOGRAPHY オブジェクトの場合、ST_SIMPLIFY は単純化アルゴリズムをコレクション内の各オブジェクトに適用します。 . . GEOMETRY オブジェクトの場合、ST_SIMPLIFY はこれらのタイプをサポートしていません。
tolerance
頂点の削除から生じる頂点とエッジ間の最大距離(メートル)。距離が頂点のこの許容値を超える場合、 ST_SIMPLIFY はその頂点を簡略化されたオブジェクトに保持します。
オプション:
preserve_collapsed
(GEOGRAPHY オブジェクトの場合のみ)
TRUE
の場合、許容値を考慮した際に小さすぎるオブジェクトを保持します。たとえば、
preserve_collapsed
がFALSE
で、tolerance
が10
(メートル)の場合、1mの長さの線は、簡略化されたオブジェクトのポイントに縮小されます。preserve_collapsed
がTRUE
の場合、線は簡略化されたオブジェクトに保持されます。デフォルト:
FALSE
。
戻り値¶
この関数は、型 GEOGRAPHY または GEOMETRY の値を返します。
例¶
GEOGRAPHY 例¶
このセクションの例では、出力を WKT 形式で表示します。
alter session set GEOGRAPHY_OUTPUT_FORMAT='WKT';
次の例は、元の LineString よりも頂点が少ない簡略化された LineString を返します。簡略化されたオブジェクトでは、頂点と、頂点を置き換えるエッジ間の距離が1000メートル未満の場合、頂点は省略されます。
SELECT ST_SIMPLIFY( TO_GEOGRAPHY('LINESTRING(-122.306067 37.55412, -122.32328 37.561801, -122.325879 37.586852)'), 1000); +----------------------------------------------------------------------------------------------------+ | ST_SIMPLIFY( | | TO_GEOGRAPHY('LINESTRING(-122.306067 37.55412, -122.32328 37.561801, -122.325879 37.586852)'), | | 1000) | |----------------------------------------------------------------------------------------------------| | LINESTRING(-122.306067 37.55412,-122.325879 37.586852) | +----------------------------------------------------------------------------------------------------+
GEOMETRY 例¶
このセクションの例では、出力を WKT 形式で表示します。
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='WKT';
次の例は、元の LineString よりも頂点が少ない簡略化された LineString を返します。簡略化されたオブジェクトでは、頂点と、頂点を置き換えるエッジ間の距離が500メートル未満の場合、頂点は省略されます。
SELECT ST_SIMPIFY(
TO_GEOMETRY('LINESTRING(1100 1100, 2500 2100, 3100 3100, 4900 1100, 3100 1900)'),
500);
+----------------------------------------------------------------------------------------------------+
| ST_SIMPLIFY(TO_GEOMETRY('LINESTRING(1100 1100, 2500 2100, 3100 3100, 4900 1100, 3100 1900)'), 500) |
|----------------------------------------------------------------------------------------------------|
| LINESTRING(1100 1100,3100 3100,4900 1100,3100 1900) |
+----------------------------------------------------------------------------------------------------+
次の例では、 tolerance
引数に応じて、36個の初期頂点を持つ楕円を16個または10個の頂点を持つ形状に単純化します。
SELECT ST_NUMPOINTS(geom) AS numpoints_before,
ST_NUMPOINTS(ST_Simplify(geom, 0.5)) AS numpoints_simplified_05,
ST_NUMPOINTS(ST_Simplify(geom, 1)) AS numpoints_simplified_1
FROM
(SELECT ST_BUFFER(to_geometry('LINESTRING(0 0, 1 1)'), 10) As geom);
+------------------+-------------------------+------------------------+
| NUMPOINTS_BEFORE | NUMPOINTS_SIMPLIFIED_05 | NUMPOINTS_SIMPLIFIED_1 |
|------------------+-------------------------+------------------------|
| 36 | 16 | 10 |
+------------------+-------------------------+------------------------+