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

ST_DumpSegments

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

الاسم

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)