الاسم
ST_LongestLine — تُعيد أطول خط ثنائي الأبعاد بين شكلين.
المختصر
geometry ST_LongestLine(geometry g1, geometry g2);
الوصف
تُعيد أطول خط ثنائي الأبعاد بين نقاط شكلين. يبدأ الخط المُعاد على g1 وينتهي على g2.
يقع أطول خط دائمًا بين رأسين. وتُعيد الدالة أول أطول خط إذا وُجد أكثر من واحد. ويساوي طول الخط المسافة التي تُعيدها ST_MaxDistance.
إذا كان g1 وg2 الشكل نفسه، تُعيد الخط بين الرأسين الأبعد عن بعضهما في الشكل. وتقع نقطتا نهاية الخط على الدائرة التي تحسبها ST_MinimumBoundingCircle.
متاحة منذ: 1.5.0
أمثلة
أطول خط بين نقطة وخط
SELECT ST_AsText( ST_LongestLine(
'POINT (160 40)',
'LINESTRING (10 30, 50 50, 30 110, 70 90, 180 140, 130 190)' )
) AS lline;
-----------------
LINESTRING(160 40,130 190)
أطول خط بين مضلعين
SELECT ST_AsText( ST_LongestLine(
'POLYGON ((190 150, 20 10, 160 70, 190 150))',
ST_Buffer('POINT(80 160)', 30)
) ) AS llinewkt;
-----------------
LINESTRING(20 10,105.3073372946034 186.95518130045156)
أطول خط عبر شكل هندسي واحد. يساوي طول الخط المسافة القصوى. وتقع نقطتا نهاية الخط على الدائرة المحيطة الصغرى.
SELECT ST_AsText( ST_LongestLine( geom, geom)) AS llinewkt,
ST_MaxDistance( geom, geom) AS max_dist,
ST_Length( ST_LongestLine(geom, geom)) AS lenll
FROM (SELECT 'POLYGON ((40 180, 110 160, 180 180, 180 120, 140 90, 160 40, 80 10, 70 40, 20 50, 40 180),
(60 140, 99 77.5, 90 140, 60 140))'::geometry AS geom) AS t;
llinewkt | max_dist | lenll
---------------------------+--------------------+--------------------
LINESTRING(20 50,180 180) | 206.15528128088303 | 206.15528128088303