الاسم
ST_BuildArea — تُنشئ شكلاً مضلّعياً مكوّناً من خطوط شكل هندسي.
المختصر
geometry ST_BuildArea(geometry geom);
الوصف
تُنشئ شكلاً مساحياً مكوّناً من الخطوط المكوِّنة للشكل المُدخل. قد يكون المُدخل LineString أو MultiLineString أو Polygon أو MultiPolygon أو GeometryCollection. والنتيجة Polygon أو MultiPolygon بحسب المُدخل. وإذا لم تُكوّن خطوط المُدخل مضلعات فتُعاد NULL.
على خلاف ST_MakePolygon، تقبل هذه الدالة حلقات مكوّنة من عدة خطوط، ويمكنها تكوين أي عدد من المضلعات.
تحوّل هذه الدالة الحلقات الداخلية إلى ثقوب. ولتحويل الحلقات الداخلية إلى مضلعات أيضاً استخدم ST_Polygonize.
|
|
|
يجب أن تكون خطوط المُدخل معقودة بشكل صحيح لكي تعمل هذه الدالة كما ينبغي. ويمكن استخدام ST_Node لعقد الخطوط. إذا تقاطعت خطوط المُدخل فستُنتج هذه الدالة مضلعات غير صالحة. ويمكن استخدام ST_MakeValid لضمان صلاحية الناتج. |
متاحة منذ: 1.1.0
أمثلة
|
الخطوط المُدخلة
|
النتيجة المساحية
|
WITH data(geom) AS (VALUES
('LINESTRING (180 40, 30 20, 20 90)'::geometry)
,('LINESTRING (180 40, 160 160)'::geometry)
,('LINESTRING (160 160, 80 190, 80 120, 20 90)'::geometry)
,('LINESTRING (80 60, 120 130, 150 80)'::geometry)
,('LINESTRING (80 60, 150 80)'::geometry)
)
SELECT ST_AsText( ST_BuildArea( ST_Collect( geom )))
FROM data;
------------------------------------------------------------------------------------------
POLYGON((180 40,30 20,20 90,80 120,80 190,160 160,180 40),(150 80,120 130,80 60,150 80))
إنشاء حلقة (دونات) من مضلعين دائريين
SELECT ST_BuildArea(ST_Collect(inring,outring))
FROM (SELECT
ST_Buffer('POINT(100 90)', 25) As inring,
ST_Buffer('POINT(100 90)', 50) As outring) As t;
انظر أيضًا
ST_Collect, ST_MakePolygon, ST_MakeValid, ST_Node, ST_Polygonize, ST_BdPolyFromText, ST_BdMPolyFromText (أغلفة لهذه الدالة بواجهة OGC القياسية)