ST_SimplifyVW — 使用 Visvalingam-Whyatt 算法返回几何图形的简化表示
geometry ST_SimplifyVW(
geometry geom, float tolerance)
;
使用 Visvalingam-Whyatt 算法返回几何图形的简化表示。简化tolerance
是一个面积值,单位与输入 SRS 的单位相同。简化会删除形成面积小于容差的“角”的顶点。即使输入有效,结果也可能无效。
该函数可以使用任何类型的几何图形(包括 GeometryCollections)调用,但只有线和多边形元素会被简化。线性几何的端点会被保留。
返回的几何图形可能会失去其简单性(请参阅 ST_IsSimple),拓扑结构可能不会被保留,并且多边形结果可能无效(请参阅 ST_IsValid)。使用 ST_SimplifyPreserveTopology 来保留拓扑结构并确保有效性。ST_CoverageSimplify 也能保留拓扑结构和有效性。 |
此函数不会保留多边形之间共享的边界。如果需要,请使用 ST_CoverageSimplify。 |
此函数处理 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);