الاسم
ST_DumpSegments — تُعيد مجموعة من صفوف geometry_dump للقطع المستقيمة في الشكل الهندسي.
المختصر
geometry_dump[] ST_DumpSegments(geometry geom);
الوصف
دالة مُعيدة لمجموعة (SRF) تستخرج قطع الشكل الهندسي. تُعيد مجموعة من صفوف geometry_dump، يحتوي كل منها على شكل هندسي (الحقل geom) ومصفوفة أعداد صحيحة (الحقل path).
-
تمثل أشكال
LINESTRINGفي الحقلgeomالقطع المستقيمة للشكل الهندسي المُعطى، بينما تمثل أشكالCIRCULARSTRINGقطع الأقواس. -
الحقل
path(من نوعinteger[]) فهرس يعدّد مواضع نقاط بداية القطع في عناصر الشكل الهندسي المُعطى. تبدأ الفهارس من 1. على سبيل المثال، فيLINESTRINGتكون المسارات{i}حيثiهي نقطة بداية القطعة رقمnthفيLINESTRING. وفيPOLYGONتكون المسارات{i,j}حيثiرقم الحلقة (1 للحلقة الخارجية، تليها الحلقات الداخلية) وjموضع نقطة بداية القطعة في الحلقة.
متاحة منذ: 3.2.0
تدعم هذه الدالة المثلثات وأسطح الشبكات المثلثية غير المنتظمة (TIN).
تدعم هذه الدالة الأبعاد الثلاثية ولا تُسقط قيمة Z.
أمثلة قياسية على الأشكال الهندسية
SELECT path, ST_AsText(geom)
FROM (
SELECT (ST_DumpSegments(g.geom)).*
FROM (SELECT 'GEOMETRYCOLLECTION(
LINESTRING(1 1, 3 3, 4 4),
POLYGON((5 5, 6 6, 7 7, 5 5))
)'::geometry AS geom
) AS g
) j;
path │ st_astext
---------------------------------
{1,1} │ LINESTRING(1 1,3 3)
{1,2} │ LINESTRING(3 3,4 4)
{2,1,1} │ LINESTRING(5 5,6 6)
{2,1,2} │ LINESTRING(6 6,7 7)
{2,1,3} │ LINESTRING(7 7,5 5)
(5 rows)
أمثلة TIN والمثلث
-- Triangle --
SELECT path, ST_AsText(geom)
FROM (
SELECT (ST_DumpSegments(g.geom)).*
FROM (SELECT 'TRIANGLE((
0 0,
0 9,
9 0,
0 0
))'::geometry AS geom
) AS g
) j;
path │ st_astext
---------------------------------
{1,1} │ LINESTRING(0 0,0 9)
{1,2} │ LINESTRING(0 9,9 0)
{1,3} │ LINESTRING(9 0,0 0)
(3 rows)
-- TIN --
SELECT path, ST_AsEWKT(geom)
FROM (
SELECT (ST_DumpSegments(g.geom)).*
FROM (SELECT 'TIN(((
0 0 0,
0 0 1,
0 1 0,
0 0 0
)), ((
0 0 0,
0 1 0,
1 1 0,
0 0 0
))
)'::geometry AS geom
) AS g
) j;
path │ st_asewkt
---------------------------------
{1,1,1} │ LINESTRING(0 0 0,0 0 1)
{1,1,2} │ LINESTRING(0 0 1,0 1 0)
{1,1,3} │ LINESTRING(0 1 0,0 0 0)
{2,1,1} │ LINESTRING(0 0 0,0 1 0)
{2,1,2} │ LINESTRING(0 1 0,1 1 0)
{2,1,3} │ LINESTRING(1 1 0,0 0 0)
(6 rows)