الاسم
ST_LineInterpolatePoint — تُعيد نقطة مُستكمَلة على امتداد خط عند موقع كسري.
المختصر
geometry ST_LineInterpolatePoint(geometry a_linestring, float8 a_fraction);
geography ST_LineInterpolatePoint(geography a_linestring, float8 a_fraction, boolean use_spheroid = true);
الوصف
تُعيد نقطة مُستكمَلة على امتداد خط عند موقع كسري. يجب أن يكون الوسيط الأول LINESTRING. والوسيط الثاني عدد عشري بين 0 و1 يمثّل نسبة طول الخط التي تقع عندها النقطة. وتُستكمَل قيم Z وM إن وُجدت.
انظر ST_LineLocatePoint لحساب أقرب موقع على الخط إلى نقطة.
|
|
|
تحسب هذه الدالة النقاط في بُعدين ثم تستكمل قيم Z وM، بينما تحسب ST_3DLineInterpolatePoint النقاط في ثلاثة أبعاد وتستكمل قيمة M فقط. |
|
|
|
منذ الإصدار 1.1.1 تستكمل هذه الدالة أيضًا قيم M وZ (عند وجودها)، بينما كانت الإصدارات السابقة تضبطها على 0.0. |
متاحة منذ: 0.8.2، وأُضيف دعم Z وM في 1.1.1
تغيّرت في: 2.1.0. حتى الإصدار 2.0.x كانت تُسمّى ST_Line_Interpolate_Point.
تدعم هذه الدالة الأبعاد الثلاثية ولا تُسقط قيمة Z.
أمثلة
خط (LineString) مع النقطة المُستكمَلة عند الموضع 20% (0.20)
-- The point 20% along a line
SELECT ST_AsEWKT( ST_LineInterpolatePoint(
'LINESTRING(25 50, 100 125, 150 190)',
0.2 ));
----------------
POINT(51.5974135047432 76.5974135047432)
نقطة المنتصف لخط ثلاثي الأبعاد:
SELECT ST_AsEWKT( ST_LineInterpolatePoint('
LINESTRING(1 2 3, 4 5 6, 6 7 8)',
0.5 ));
--------------------
POINT(3.5 4.5 5.5)
أقرب نقطة على خط إلى نقطة:
SELECT ST_AsText( ST_LineInterpolatePoint( line.geom,
ST_LineLocatePoint( line.geom, 'POINT(4 3)')))
FROM (SELECT ST_GeomFromText('LINESTRING(1 2, 4 5, 6 7)') As geom) AS line;
------------
POINT(3 4)