名稱

ST_SimplifyVW — 使用 Visvalingam-Whyatt 演算法,返回幾何圖形的簡化表示

概要

geometry ST_SimplifyVW(geometry geom, float tolerance);

說明

使用 Visvalingam-Whyatt 演算法,返回幾何圖形的簡化表示。tolerance 簡化值是面積值,單位與輸入 SRS 相同。簡化會移除形成「角落」且面積小於 tolerance 的頂點。即使輸入有效,結果也可能無效。

此函數可以使用任何類型的幾何圖形 (包括 GeometryCollections) 呼叫,但僅會簡化線和多邊形元素。線性幾何圖形的端點會保留。

[Note]

返回的幾何圖形可能會失去其簡單性(請參閱 ST_IsSimple),拓撲結構可能不會保留,並且多邊形結果可能無效(請參閱 ST_IsValid)。使用 ST_SimplifyPreserveTopology 來保留拓撲結構並確保有效性。ST_CoverageSimplify 也會保留拓撲結構和有效性。

[Note]

此函數不會保留多邊形之間共用的邊界。如果需要,請使用 ST_CoverageSimplify

[Note]

此函數處理 3D,且第三個維度會影響結果。

可用性:2.2.0

範例

使用最小面積容差 30 簡化 LineString。

SELECT ST_AsText(ST_SimplifyVW(geom,30)) simplified
  FROM (SELECT 'LINESTRING(5 2, 3 8, 6 20, 7 25, 10 10)'::geometry AS geom) AS t;

 simplified
------------------------------
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)',
    1600);

簡化一個多邊形。

SELECT ST_SimplifyVW(
  'MULTIPOLYGON (((90 110, 80 180, 50 160, 10 170, 10 140, 20 110, 90 110)), ((40 80, 100 100, 120 160, 170 180, 190 70, 140 10, 110 40, 60 40, 40 80), (180 70, 170 110, 142.5 128.5, 128.5 77.5, 90 60, 180 70)))',
    40);