الاسم
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 دون الحفاظ على الطوبولوجيا