ST_SimplifyVW — Visvalingam-Whyattアルゴリズムを使用して、入力ジオメトリを簡略化したジオメトリを返します。
geometry ST_SimplifyVW(geometry geom, float tolerance);
Visvalingam-Whyatt algorithm を使ったジオメトリーの簡略化した表現を返します。簡略化の tolerance は面積値で入力 SRS の単位の 2乗です。簡略化によって許容値より小さい面積では「角」を構成する頂点が削除されます。入力ジオメトリーが妥当であっても返り値が妥当であるとは限りません。
この関数は、どの種類のジオメトリでも (GEOMETRYCOLLECTION であっても) 呼ぶことができますが、ライン要素とポリゴン要素だけが単純化されます。線ジオメトリの端点は保持されます。
|
|
|
返されるジオメトリは単純性を喪失している場合があり (ST_IsSimpleを参照)、トポロジが保持されていない可能性があり、ポリゴンの結果が不正になる場合があります (ST_IsValid参照)。トポロジを保全し、妥当性を確保するには、ST_SimplifyPreserveTopologyを使います。ST_CoverageSimplifyでもトポロジ保全と妥当性確保ができます。 |
これは汎用単純化関数です。有効面積が許容値より小さい場合にはポリゴンの狭い突起を削除することがありますが、突起除去専用処理でもポリゴン修復専門処理でもありません。必要に応じて、結果が妥当かを ST_IsValid を使って確認し、ST_MakeValid を使って不正なポリゴン出力を修復します。
この関数は、ポリゴン間で共有される境界は保持されません。保持するにはST_CoverageSimplifyを使います。
この関数は3次元を扱います。第3次元は結果に影響を与えます。
Availability: 2.2.0
このポリゴンは有効面積が許容値20平方単位より十分小さい突起を持っています。
SELECT geom AS original, ST_SimplifyVW(geom, 20) AS simplified FROM (SELECT 'POLYGON((0 0,10 0,10 10,5.2 10,5 16,4.8 10,0 10,0 0))'::geometry AS geom) AS t;
POLYGON((0 0,10 0,10 10,5.2 10,5 16,4.8 10,0 10,0 0)) | POLYGON((0 0,10 0,10 10,0 10,0 0))
ST_Simplify を使用するラインの単純化について、比較する許容値は入力 SRS を単位とした長さで、ここの値はだいたいでラインの許容値の 2乗です。
SELECT ST_SimplifyVW(geom, 30) simplified FROM (SELECT 'LINESTRING(5 2,3 8,6 20,7 25,10 10)'::geometry AS geom) AS t;
LINESTRING(5 2,7 25,10 10)
線の単純化。
SELECT ST_SimplifyVW('LINESTRING (10 10,50 40,30 70,50 60,70 80,50 110,100 100,90 140,100 180,150 170,170 140,190 90,180 40,110 40,150 20)'::geometry,
1600);
LINESTRING(10 10,100 100,100 180,150 170,190 90,150 20)
ポリゴンの単純化。
SELECT ST_SimplifyVW('POLYGON ((20 20,50 60,20 120,40 170,80 180,120 140,180 180,160 130,180 100,180 30,130 70,150 10,20 20))'::geometry,
1600);
POLYGON((20 20,20 120,80 180,160 130,180 30,20 20))
ST_SetEffectiveArea, ST_Simplify, ST_SimplifyPreserveTopology, ST_CoverageSimplify, Topology ST_Simplify