الاسم
ST_SimplifyPolygonHull — تحسب غلافاً خارجياً أو داخلياً مبسّطاً يحافظ على الطوبولوجيا لشكل مضلّعي.
المختصر
geometry ST_SimplifyPolygonHull(geometry param_geom, float vertex_fraction, boolean is_outer = true);
الوصف
تحسب غلافاً خارجياً أو داخلياً مبسّطاً يحافظ على الطوبولوجيا لشكل مضلّعي. الغلاف الخارجي يغطي الشكل المُدخل بالكامل. والغلاف الداخلي يغطيه الشكل المُدخل بالكامل. والنتيجة شكل مضلّعي متكوّن من مجموعة جزئية من رؤوس المُدخل. وتُعالَج المضلعات المتعددة والثقوب وتُنتج نتيجة بالبنية نفسها التي للمُدخل.
يتحكم المعامل vertex_fraction في مقدار تقليل عدد الرؤوس، وهو عدد في المدى من 0 إلى 1. القيم الأدنى تُنتج نتائج أبسط، بعدد رؤوس أقل وتقعّر أقل. وبالنسبة إلى الغلافين الخارجي والداخلي كليهما، تُنتج نسبة الرؤوس 1.0 الشكل الأصلي. وبالنسبة إلى الأغلفة الخارجية، تُنتج القيمة 0.0 الغلاف المحدب (لمضلع واحد)؛ وبالنسبة إلى الأغلفة الداخلية تُنتج مثلثاً.
تعمل عملية التبسيط بإزالة الزوايا المقعّرة التي تحتوي على أقل مساحة تدريجياً، حتى الوصول إلى عدد الرؤوس المستهدف. وتمنع تقاطع الحواف، لذا تكون النتيجة دائماً شكلاً مضلّعياً صالحاً.
للحصول على نتائج أفضل مع الأشكال التي تحتوي على قطع مستقيمة طويلة نسبياً، قد يلزم "تقطيع" المُدخل، كما هو موضّح أدناه.
تُنفَّذ بواسطة وحدة GEOS.
متاحة منذ: 3.3.0.
تتطلب GEOS >= 3.11.0.
أمثلة
الغلاف الخارجي لمضلع
SELECT ST_SimplifyPolygonHull(
'POLYGON ((131 158, 136 163, 161 165, 173 156, 179 148, 169 140, 186 144, 190 137, 185 131, 174 128, 174 124, 166 119, 158 121, 158 115, 165 107, 161 97, 166 88, 166 79, 158 57, 145 57, 112 53, 111 47, 93 43, 90 48, 88 40, 80 39, 68 32, 51 33, 40 31, 39 34, 49 38, 34 38, 25 34, 28 39, 36 40, 44 46, 24 41, 17 41, 14 46, 19 50, 33 54, 21 55, 13 52, 11 57, 22 60, 34 59, 41 68, 75 72, 62 77, 56 70, 46 72, 31 69, 46 76, 52 82, 47 84, 56 90, 66 90, 64 94, 56 91, 33 97, 36 100, 23 100, 22 107, 29 106, 31 112, 46 116, 36 118, 28 131, 53 132, 59 127, 62 131, 76 130, 80 135, 89 137, 87 143, 73 145, 80 150, 88 150, 85 157, 99 162, 116 158, 115 165, 123 165, 122 170, 134 164, 131 158))',
0.3);
الغلاف الداخلي لمضلع
SELECT ST_SimplifyPolygonHull(
'POLYGON ((131 158, 136 163, 161 165, 173 156, 179 148, 169 140, 186 144, 190 137, 185 131, 174 128, 174 124, 166 119, 158 121, 158 115, 165 107, 161 97, 166 88, 166 79, 158 57, 145 57, 112 53, 111 47, 93 43, 90 48, 88 40, 80 39, 68 32, 51 33, 40 31, 39 34, 49 38, 34 38, 25 34, 28 39, 36 40, 44 46, 24 41, 17 41, 14 46, 19 50, 33 54, 21 55, 13 52, 11 57, 22 60, 34 59, 41 68, 75 72, 62 77, 56 70, 46 72, 31 69, 46 76, 52 82, 47 84, 56 90, 66 90, 64 94, 56 91, 33 97, 36 100, 23 100, 22 107, 29 106, 31 112, 46 116, 36 118, 28 131, 53 132, 59 127, 62 131, 76 130, 80 135, 89 137, 87 143, 73 145, 80 150, 88 150, 85 157, 99 162, 116 158, 115 165, 123 165, 122 170, 134 164, 131 158))',
0.3, false);
تبسيط الغلاف الخارجي لـ MultiPolygon، مع التقطيع
SELECT ST_SimplifyPolygonHull(
ST_Segmentize(ST_Letters('xt'), 2.0),
0.1);