الاسم
ST_CoverageSimplify — دالة نافذة تبسّط حواف تغطية مضلعية.
المختصر
geometry ST_CoverageSimplify(geometry winset geom, float8 tolerance, boolean simplifyBoundary = true);
الوصف
دالة نافذة تبسّط حواف المضلعات في تغطية مضلعية. ويحافظ التبسيط على طوبولوجيا التغطية. ويعني ذلك أن المضلعات الناتجة المبسّطة متسقة على طول الحواف المشتركة، وتظل تشكّل تغطية صالحة.
يستخدم التبسيط صيغة من خوارزمية Visvalingam–Whyatt. وحدة المعامل tolerance هي وحدة المسافة، وهو يساوي تقريبًا الجذر التربيعي لمساحات المثلثات المراد تبسيطها.
لتبسيط الحواف "الداخلية" فقط من التغطية (تلك التي يتشاركها مضلعان) اضبط المعامل simplifyBoundary على false.
|
|
|
إذا لم يكن المُدخل تغطية صالحة فقد تظهر عيوب غير متوقعة في الناتج (مثل تقاطع الحدود، أو انفصال حدود كانت تبدو مشتركة). استخدم ST_CoverageInvalidEdges لتحديد ما إذا كانت التغطية صالحة. |
متاحة منذ: 3.4.0
تتطلب GEOS >= 3.12.0
أمثلة
|
التغطية المُدخلة
|
التغطية المبسّطة
|
WITH coverage(id, geom) AS (VALUES
(1, 'POLYGON ((160 150, 110 130, 90 100, 90 70, 60 60, 50 10, 30 30, 40 50, 25 40, 10 60, 30 100, 30 120, 20 170, 60 180, 90 190, 130 180, 130 160, 160 150), (40 160, 50 140, 66 125, 60 100, 80 140, 90 170, 60 160, 40 160))'::geometry),
(2, 'POLYGON ((40 160, 60 160, 90 170, 80 140, 60 100, 66 125, 50 140, 40 160))'::geometry),
(3, 'POLYGON ((110 130, 160 50, 140 50, 120 33, 90 30, 50 10, 60 60, 90 70, 90 100, 110 130))'::geometry),
(4, 'POLYGON ((160 150, 150 120, 160 90, 160 50, 110 130, 160 150))'::geometry)
)
SELECT id, ST_AsText(ST_CoverageSimplify(geom, 30) OVER ())
FROM coverage;
id | st_astext
----+---------------------------------------
1 | POLYGON ((160 150, 110 130, 50 10, 10 60, 20 170, 90 190, 160 150), (40 160, 66 125, 90 170, 40 160))
2 | POLYGON ((40 160, 66 125, 90 170, 40 160))
3 | POLYGON ((110 130, 160 50, 50 10, 110 130))
4 | POLYGON ((160 150, 160 50, 110 130, 160 150))