GISarabia.org
PostGIS › الدليل الرسمي › 8. مرجع دوال SFCGAL › 8.3. دوال المعالجة والعلاقات في SFCGAL
PostGIS 3.6 · Official Manual · ترجمة عربية

CG_Simplify

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

الاسم

CG_Simplify — تقلّل تعقيد الشكل الهندسي مع الحفاظ على سماته الأساسية وقيم Z/M.

المختصر

geometry CG_Simplify(geometry geom, double precision threshold, boolean preserveTopology = false);

الوصف

تبسّط شكلًا هندسيًا باستخدام خوارزمية التبسيط في SFCGAL، التي تقلّل عدد النقاط أو الرؤوس مع الحفاظ على السمات الأساسية للشكل الهندسي. تحافظ هذه الدالة على قيم Z وM أثناء التبسيط.

تعتمد الخوارزمية على التثليث المقيّد وتستخدم مكتبة CGAL Polyline Simplification 2 مع معالجة إضافية للحفاظ على إحداثيات Z وM. عند الحفاظ على الطوبولوجيا وتقاطع الأشكال الهندسية، تُستكمَل (interpolate) قيم Z وM عند نقاط التقاطع.

تعمل هذه الدالة جيدًا مع الأشكال الهندسية الثلاثية الأبعاد الشبيهة بالتضاريس (2.5D) لكنها غير مصمَّمة للأسطح الرأسية مثل الجدران.

متاحة منذ: 3.6.0 - تتطلب SFCGAL >= 2.1.0

تتطلب هذه الدالة الواجهة الخلفية SFCGAL.

تدعم هذه الدالة الأبعاد الثلاثية ولا تُسقط قيمة Z.

تدعم هذه الدالة إحداثيات M.

المعاملات

geom

الشكل الهندسي المُدخَل

threshold

عتبة المسافة القصوى (بوحدة الشكل الهندسي) للتبسيط. كلما زادت هذه القيمة، زاد تبسيط الشكل الهندسي الناتج.

preserveTopology

إذا ضُبط على true، تضمن الدالة الحفاظ على طوبولوجيا الشكل الهندسي. وعند تقاطع الأشكال الهندسية في هذا الوضع، تُستكمَل قيم Z وM عند نقاط التقاطع. القيمة الافتراضية false.

القيمة المُعادة

تُعيد شكلًا هندسيًا مبسّطًا مع الحفاظ على قيم Z وM.

أمثلة

-- Simplify a polygon with a threshold of 0.5
SELECT ST_AsText(CG_Simplify(ST_GeomFromText('POLYGON((0 0, 0 1, 0.1 1, 0.2 1, 0.3 1, 0.4 1, 0.5 1, 1 1, 1 0, 0 0))'), 0.5));

-- Simplify a 3D terrain geometry while preserving topology and Z values
SELECT ST_AsText(CG_Simplify(ST_GeomFromText('LINESTRING Z(0 0 0, 0 1 1, 0.1 1 1, 0.2 1 1, 0.3 1 1, 1 1 2)'), 0.2, true));

-- Simplify a geometry with both Z and M values
SELECT ST_AsText(CG_Simplify(ST_GeomFromText('LINESTRING ZM(0 0 0 1, 0 1 1 2, 0.1 1 1 3, 0.2 1 1 4, 0.3 1 1 5, 1 1 2 6)'), 0.2));

-- Simplify two geometry together preserving Z and M values, without topology
SELECT ST_AsText(CG_Simplify('GEOMETRYCOLLECTION ZM(LINESTRING ZM(-1 -1 3 4, 0 0 10 100, 1 1 20 200, 0 2 15 150, 0 5 30 300, 2 19 25 250, -4 20 15 150), POLYGON ZM((0 0 10 100, 1 1 20 200, 0 2 15 150, 0 5 30 300, 2 19 25 250, -4 20 15 150, 0 0 10 100)))', 2, false));

-- Simplify two geometry together preserving Z and M values, with topology
SELECT ST_AsText(CG_Simplify('GEOMETRYCOLLECTION ZM(LINESTRING ZM(-1 -1 3 4, 0 0 10 100, 1 1 20 200, 0 2 15 150, 0 5 30 300, 2 19 25 250, -4 20 15 150), POLYGON ZM((0 0 10 100, 1 1 20 200, 0 2 15 150, 0 5 30 300, 2 19 25 250, -4 20 15 150, 0 0 10 100)))', 2, true));
      

WITH depts_pds as (SELECT ST_GeomFromText('GEOMETRYCOLLECTION(
POLYGON((88.46 158.85,90.77 171.54,147.31 173.85,146.15 145,173.85 119.62,146.15 103.46,112.69 118.46,91.92 93.08,65.38 101.15,34.23 121.92,41.15 142.69,49.23 143.85,88.46 158.85)),
POLYGON((112.69 118.46,146.15 103.46,190 60.77,185.38 43.46,126.54 26.15,83.85 28.46,67.69 64.23,43.46 58.46,10 83.85,34.23 121.92,65.38 101.15,91.92 93.08,112.69 118.46)))
') as geom)
SELECT geom FROM depts_pds;
        

الأشكال الهندسية الأصلية

WITH depts_pds as (SELECT ST_GeomFromText('GEOMETRYCOLLECTION(
POLYGON((88.46 158.85,90.77 171.54,147.31 173.85,146.15 145,173.85 119.62,146.15 103.46,112.69 118.46,91.92 93.08,65.38 101.15,34.23 121.92,41.15 142.69,49.23 143.85,88.46 158.85)),
POLYGON((112.69 118.46,146.15 103.46,190 60.77,185.38 43.46,126.54 26.15,83.85 28.46,67.69 64.23,43.46 58.46,10 83.85,34.23 121.92,65.38 101.15,91.92 93.08,112.69 118.46)))
') as geom)
SELECT (ST_Dump(CG_Simplify(geom, 0.5, true))).geom FROM depts_pds;
        

التبسيط بقيمة 0.5 مع الحفاظ على الطوبولوجيا

WITH depts_pds as (SELECT ST_GeomFromText('GEOMETRYCOLLECTION(
POLYGON((88.46 158.85,90.77 171.54,147.31 173.85,146.15 145,173.85 119.62,146.15 103.46,112.69 118.46,91.92 93.08,65.38 101.15,34.23 121.92,41.15 142.69,49.23 143.85,88.46 158.85)),
POLYGON((112.69 118.46,146.15 103.46,190 60.77,185.38 43.46,126.54 26.15,83.85 28.46,67.69 64.23,43.46 58.46,10 83.85,34.23 121.92,65.38 101.15,91.92 93.08,112.69 118.46)))
') as geom)
SELECT (ST_Dump(CG_Simplify(geom, 0.5, false))).geom FROM depts_pds;
      

التبسيط بقيمة 0.5 دون الحفاظ على الطوبولوجيا