GISarabia.org
PostGIS › الدليل الرسمي › 7. مرجع PostGIS › 7.14. معالجة الأشكال الهندسية
PostGIS 3.6 · Official Manual · ترجمة عربية

ST_SimplifyPreserveTopology

الصفحة الأصلية بالإنجليزية postgis.net ↗

الاسم

ST_SimplifyPreserveTopology — تُعيد تمثيلاً مبسّطاً وصالحاً لشكل هندسي باستخدام خوارزمية Douglas-Peucker.

المختصر

geometry ST_SimplifyPreserveTopology(geometry geom, float tolerance);

الوصف

تحسب تمثيلاً مبسّطاً لشكل هندسي باستخدام نسخة من خوارزمية Douglas-Peucker تقيّد التبسيط لضمان أن تكون للنتيجة الطوبولوجيا نفسها التي للمُدخل. تسامح التبسيط tolerance قيمة مسافة بوحدات النظام المرجعي المكاني للمُدخل. ويُزيل التبسيط الرؤوس الواقعة ضمن مسافة التسامح من الخطوط المبسّطة، ما دامت الطوبولوجيا محفوظة. وستكون النتيجة صالحة وبسيطة إذا كان المُدخل كذلك.

يمكن استدعاء الدالة مع أي نوع من الأشكال الهندسية (بما فيها GeometryCollection)، لكن لا تُبسَّط إلا عناصر الخطوط والمضلعات. بالنسبة إلى المُدخلات المضلّعية، ستحتوي النتيجة على العدد نفسه من الحلقات (الأغلفة والثقوب)، ولن تتقاطع الحلقات. وقد تُبسَّط نقاط نهايات الحلقات. وبالنسبة إلى المُدخلات الخطية، ستحتوي النتيجة على العدد نفسه من الخطوط، ولن تتقاطع الخطوط إذا لم تكن متقاطعة في الشكل الأصلي. ويُحافظ على نقاط نهايات الأشكال الخطية.

[ملاحظة]

لا تحافظ هذه الدالة على الحدود المشتركة بين المضلعات. استخدم ST_CoverageSimplify إذا كان ذلك مطلوباً.

تُنفَّذ بواسطة وحدة GEOS.

متاحة منذ: 1.3.3

أمثلة

في المثال نفسه الوارد في ST_Simplify، تمنع ST_SimplifyPreserveTopology الإفراط في التبسيط. فالدائرة يمكن أن تصبح مربعاً على الأكثر.

SELECT  ST_Npoints(geom) AS np_before, 
        ST_NPoints(ST_SimplifyPreserveTopology(geom, 0.1)) AS np01_notbadcircle, 
        ST_NPoints(ST_SimplifyPreserveTopology(geom, 0.5)) AS np05_notquitecircle,
        ST_NPoints(ST_SimplifyPreserveTopology(geom, 1))   AS np1_octagon, 
        ST_NPoints(ST_SimplifyPreserveTopology(geom, 10))  AS np10_square,
        ST_NPoints(ST_SimplifyPreserveTopology(geom, 100)) AS np100_stillsquare
FROM (SELECT ST_Buffer('POINT(1 3)', 10,12) AS geom) AS t;

 np_before | np01_notbadcircle | np05_notquitecircle | np1_octagon | np10_square | np100_stillsquare
-----------+-------------------+---------------------+-------------+-------------+-------------------
        49 |                33 |                  17 |           9 |           5 |                 5

تبسيط مجموعة من الخطوط مع الحفاظ على طوبولوجيا الخطوط غير المتقاطعة.

SELECT ST_SimplifyPreserveTopology(
  'MULTILINESTRING ((20 180, 20 150, 50 150, 50 100, 110 150, 150 140, 170 120), (20 10, 80 30, 90 120), (90 120, 130 130), (130 130, 130 70, 160 40, 180 60, 180 90, 140 80), (50 40, 70 40, 80 70, 70 60, 60 60, 50 50, 50 40))',
    40);

تبسيط MultiPolygon مع الحفاظ على طوبولوجيا الأغلفة والثقوب.

SELECT ST_SimplifyPreserveTopology(
  '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);