الاسم
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)