名前

ST_SimplifyVW — Visvalingam-Whyattアルゴリズムを使用して、入力ジオメトリを簡略化したジオメトリを返します。

概要

geometry ST_SimplifyVW(geometry geom, float tolerance);

説明

Returns a simplified representation of a geometry using the Visvalingam-Whyatt algorithm. The simplification tolerance is an area value, in squared units of the input SRS. Simplification removes vertices which form "corners" with area less than the tolerance. The result may not be valid even if the input is.

この関数は、どの種類のジオメトリでも (GEOMETRYCOLLECTION であっても) 呼ぶことができますが、ライン要素とポリゴン要素だけが単純化されます。線ジオメトリの端点は保持されます。

[注記]

返されるジオメトリは単純性を喪失している場合があり (ST_IsSimpleを参照)、トポロジが保持されていない可能性があり、ポリゴンの結果が不正になる場合があります (ST_IsValid参照)。トポロジを保全し、妥当性を確保するには、ST_SimplifyPreserveTopologyを使います。ST_CoverageSimplifyでもトポロジ保全と妥当性確保ができます。

This is a general-purpose simplification function. It may remove narrow polygon spikes when their effective area is below the tolerance, but it is not a dedicated spike-removal or polygon-repair operation. Use ST_IsValid to check the result and ST_MakeValid to repair invalid polygonal output if needed.

この関数は、ポリゴン間で共有される境界は保持されません。保持するにはST_CoverageSimplifyを使います。

この関数は3次元を扱います。第3次元は結果に影響を与えます。

Availability: 2.2.0

This polygon has a narrow spike whose effective area is small enough to be removed by a tolerance of 20 square units.

Code
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))
Figure
Geometry figure for visual-st-simplifyvw-01

A LineString is simplified with a minimum-area tolerance of 30. For a linear simplification using ST_Simplify, a comparable tolerance would be a length in input-SRS units, so the value here is roughly that linear tolerance squared.

Code
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)
Figure
Geometry figure for visual-st-simplifyvw-02

線の単純化。

Code
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)
Figure
Geometry figure for visual-st-simplifyvw-03

ポリゴンの単純化。

Code
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))
Figure
Geometry figure for visual-st-simplifyvw-04