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

ST_Boundary

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

الاسم

ST_Boundary — تُعيد حدود الشكل الهندسي.

المختصر

geometry ST_Boundary(geometry geomA);

الوصف

تُعيد انغلاق الحدود التوافقية (combinatorial boundary) لهذا الشكل الهندسي. تُعرَّف الحدود التوافقية كما هو موضح في القسم 3.12.3.2 من مواصفة OGC. ولأن ناتج هذه الدالة انغلاق، ومن ثم فهو مغلق طوبولوجيًا، يمكن تمثيل الحدود الناتجة باستخدام الأشكال الهندسية الأولية التمثيلية كما هو موضح في مواصفة OGC، القسم 3.12.2.

تُنفَّذ بواسطة وحدة GEOS

[ملاحظة]

قبل الإصدار 2.0.0، كانت هذه الدالة تُطلق استثناءً إذا استُخدمت مع GEOMETRYCOLLECTION. ومنذ الإصدار 2.0.0 تُعيد NULL بدلًا من ذلك (مُدخل غير مدعوم).

تطبّق هذه الدالة مواصفة OGC Simple Features Implementation Specification for SQL 1.1. OGC SPEC s2.1.1.1

تطبّق هذه الدالة مواصفة SQL/MM. SQL-MM IEC 13249-3: 5.1.17

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

حُسّنت في: 2.1.0 أُضيف دعم المثلث (Triangle)

تغيّرت في: 3.2.0 دعم TIN، لا تستخدم GEOS، ولا تحوّل المنحنيات إلى خطوط

أمثلة

خط (LineString) مع نقاط الحدود متراكبة عليه

SELECT ST_Boundary(geom)
FROM (SELECT 'LINESTRING(100 150,50 60, 70 80, 160 170)'::geometry As geom) As f;
                                


ST_AsText output

MULTIPOINT((100 150),(160 170))

ثقوب مضلع مع حدودها كخط متعدد (MultiLineString)

SELECT ST_Boundary(geom)
FROM (SELECT
'POLYGON (( 10 130, 50 190, 110 190, 140 150, 150 80, 100 10, 20 40, 10 130 ),
        ( 70 40, 100 50, 120 80, 80 110, 50 90, 70 40 ))'::geometry As geom) As f;
                                


ST_AsText output

MULTILINESTRING((10 130,50 190,110 190,140 150,150 80,100 10,20 40,10 130),
        (70 40,100 50,120 80,80 110,50 90,70 40))

SELECT ST_AsText(ST_Boundary(ST_GeomFromText('LINESTRING(1 1,0 0, -1 1)')));
st_astext
-----------
MULTIPOINT((1 1),(-1 1))

SELECT ST_AsText(ST_Boundary(ST_GeomFromText('POLYGON((1 1,0 0, -1 1, 1 1))')));
st_astext
----------
LINESTRING(1 1,0 0,-1 1,1 1)

--Using a 3d polygon
SELECT ST_AsEWKT(ST_Boundary(ST_GeomFromEWKT('POLYGON((1 1 1,0 0 1, -1 1 1, 1 1 1))')));

st_asewkt
-----------------------------------
LINESTRING(1 1 1,0 0 1,-1 1 1,1 1 1)

--Using a 3d multilinestring
SELECT ST_AsEWKT(ST_Boundary(ST_GeomFromEWKT('MULTILINESTRING((1 1 1,0 0 0.5, -1 1 1),(1 1 0.5,0 0 0.5, -1 1 0.5, 1 1 0.5) )')));

st_asewkt
----------
MULTIPOINT((-1 1 1),(1 1 0.75))

انظر أيضًا

ST_AsText, ST_ExteriorRing, ST_MakePolygon