ST_SetEffectiveArea — Visvalingam-Whyatt アルゴリズムを使って有効範囲となる個々の頂点を置きます。
geometry ST_SetEffectiveArea(geometry geom, float threshold = 0, integer set_area = 1);
Visvalingam-Whyatt アルゴリズムから有効範囲となる個々の頂点を置きます。有効範囲はジオメトリーの M 値として格納されます。任意引数である第 2引数を使うと、しきい値以上の有効範囲となる頂点だけで構築されるジオメトリーを返します。
この関数は、しきい値を使うことでサーバサイド簡略化に使えます。もう一つの任意引数はしきい値を 0にする際に使用します。この場合、完全なジオメトリーを得ますが、クライアントが非常に高速に簡略化するために使う M 値として格納している有効範囲を持っています。
(MULTI)LINE と(MULTI)POLYGON とで実際に動作をしますが、どのような種類のジオメトリでも安全に呼ぶことができます。簡略化はオブジェクトごとに行われるので、ジオメトリコレクションでこの関数を呼ぶことができます。
|
|
|
返されるジオメトリーは単純性 (ST_IsSimple参照) を失うことがあります。 |
|
|
|
トポロジは保存されているとは限らず、不正なジオメトリーを返すことがあります。トポロジを保存するにはST_SimplifyPreserveTopologyを使います。 |
|
|
|
出力ジオメトリーは、入力時に持っていた M 値の情報の全てを失います。 |
|
|
|
この関数は 3次元を扱います。第 3次元は結果に影響を与えます。 |
Availability: 2.2.0
ラインストリングの有効範囲の計算。しきい値を 0にしているので、入力ジオメトリーの全ての頂点が返ります。
SELECT ST_SetEffectiveArea(geom) AS all_pts,
ST_SetEffectiveArea(geom, 30) AS threshold_30
FROM (SELECT 'LINESTRING(5 2,3 8,6 20,7 25,10 10)'::geometry geom) As foo;