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

ST_PointN

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

الاسم

ST_PointN — تُعيد النقطة رقم N في أول خط (LineString) أو خط دائري في الشكل الهندسي.

المختصر

geometry ST_PointN(geometry a_linestring, integer n);

الوصف

تُعيد النقطة رقم N في خط مفرد أو خط دائري مفرد في الشكل الهندسي. تُعدّ القيم السالبة رجوعًا من نهاية الخط، بحيث تكون -1 هي النقطة الأخيرة. وتُعيد NULL إذا لم يوجد خط في الشكل الهندسي.

[ملاحظة]

يبدأ الفهرس من 1 وفقًا لمواصفات OGC منذ الإصدار 0.8.0. أما الفهرسة العكسية (الفهرس السالب) فليست ضمن OGC. وكانت الإصدارات السابقة تبدأ الفهرس من 0.

[ملاحظة]

إذا أردت الحصول على النقطة رقم N من كل خط في خط متعدد (MultiLineString)، فاستخدمها مع ST_Dump

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

تطبّق هذه الدالة مواصفة SQL/MM. SQL-MM 3: 7.2.5, 7.3.5

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

تدعم هذه الدالة الأقواس الدائرية (Circular Strings) والمنحنيات.

[ملاحظة]

تغيّرت في: 2.0.0 لم تعد تعمل مع الخطوط المتعددة ذات الشكل الواحد. في الإصدارات الأقدم من PostGIS -- كان الخط المتعدد المكوّن من خط واحد يعمل مع هذه الدالة دون مشكلة ويُعيد نقطة البداية. أما في 2.0.0 فتُعيد NULL ببساطة كأي خط متعدد آخر.

تغيّرت في: 2.3.0 : أصبحت الفهرسة السالبة متاحة (-1 هي النقطة الأخيرة)

أمثلة

-- Extract all POINTs from a LINESTRING
SELECT ST_AsText(
   ST_PointN(
          column1,
          generate_series(1, ST_NPoints(column1))
   ))
FROM ( VALUES ('LINESTRING(0 0, 1 1, 2 2)'::geometry) ) AS foo;

 st_astext
------------
 POINT(0 0)
 POINT(1 1)
 POINT(2 2)
(3 rows)

--Example circular string
SELECT ST_AsText(ST_PointN(ST_GeomFromText('CIRCULARSTRING(1 2, 3 2, 1 2)'), 2));

 st_astext
------------
 POINT(3 2)
(1 row)

SELECT ST_AsText(f)
FROM ST_GeomFromText('LINESTRING(0 0 0, 1 1 1, 2 2 2)') AS g
  ,ST_PointN(g, -2) AS f; -- 1 based index

    st_astext
-----------------
 POINT Z (1 1 1)
(1 row)

انظر أيضًا

ST_NPoints