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

ST_Simplify

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

الاسم

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

المختصر

geometry ST_Simplify(geometry geom, float tolerance);

geometry ST_Simplify(geometry geom, float tolerance, boolean preserveCollapsed);

الوصف

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

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

تحتفظ الراية preserveCollapsed بالأشكال الصغيرة التي كانت ستُزال لولا ذلك عند التسامح المعطى. فمثلاً، إذا بُسّط خط طوله 1m بتسامح 10m، فلن يختفي الخط عندما تكون قيمة preserveCollapsed هي true. وهذه الراية مفيدة لأغراض العرض، لمنع اختفاء المعالم الصغيرة جداً من الخريطة.

[ملاحظة]

قد يفقد الشكل المُعاد بساطته (انظر ST_IsSimple)، وقد لا يُحافظ على الطوبولوجيا، وقد تكون النتائج المضلّعية غير صالحة (انظر ST_IsValid). استخدم ST_SimplifyPreserveTopology للحفاظ على الطوبولوجيا وضمان الصلاحية.

[ملاحظة]

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

متاحة منذ: 1.2.2

أمثلة

دائرة مبسّطة أكثر من اللازم تصبح مثلثاً، وبتبسيط متوسط تصبح مثمّناً،

SELECT ST_Npoints(geom) AS np_before,
       ST_NPoints(ST_Simplify(geom, 0.1)) AS np01_notbadcircle,
       ST_NPoints(ST_Simplify(geom, 0.5)) AS np05_notquitecircle,
       ST_NPoints(ST_Simplify(geom, 1)) AS np1_octagon,
       ST_NPoints(ST_Simplify(geom, 10)) AS np10_triangle,
       (ST_Simplify(geom, 100) is null) AS  np100_geometrygoesaway
  FROM (SELECT ST_Buffer('POINT(1 3)', 10,12) As geom) AS t;

 np_before | np01_notbadcircle | np05_notquitecircle | np1_octagon | np10_triangle | np100_geometrygoesaway
-----------+-------------------+---------------------+-------------+---------------+------------------------
        49 |                33 |                  17 |           9 |             4 | t

تبسيط مجموعة من الخطوط. قد تتقاطع الخطوط بعد التبسيط.

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