الاسم
ST_ClosestPoint — تُعيد النقطة ثنائية الأبعاد على g1 الأقرب إلى g2. وهي النقطة الأولى من أقصر خط من أحد الشكلين إلى الآخر.
المختصر
geometry ST_ClosestPoint(geometry geom1, geometry geom2);
geography ST_ClosestPoint(geography geom1, geography geom2, boolean use_spheroid = true);
الوصف
تُعيد النقطة ثنائية الأبعاد على geom1 الأقرب إلى geom2. وهي النقطة الأولى من أقصر خط بين الشكلين (كما تحسبه ST_ShortestLine).
|
|
|
إذا كان لديك شكل هندسي ثلاثي الأبعاد، فقد تفضّل استخدام ST_3DClosestPoint. |
حُسّنت في: 3.4.0 - دعم geography.
متاحة منذ: 1.5.0
أمثلة
أقرب نقطة بين Point وLineString هي النقطة نفسها. وأقرب نقطة بين LineString وPoint هي نقطة على الخط.
SELECT ST_AsText( ST_ClosestPoint(pt,line)) AS cp_pt_line,
ST_AsText( ST_ClosestPoint(line,pt)) AS cp_line_pt
FROM (SELECT 'POINT (160 40)'::geometry AS pt,
'LINESTRING (10 30, 50 50, 30 110, 70 90, 180 140, 130 190)'::geometry AS line ) AS t;
cp_pt_line | cp_line_pt
----------------+------------------------------------------
POINT(160 40) | POINT(125.75342465753425 115.34246575342466)
أقرب نقطة على المضلع A إلى المضلع B
SELECT ST_AsText( ST_ClosestPoint(
'POLYGON ((190 150, 20 10, 160 70, 190 150))',
ST_Buffer('POINT(80 160)', 30) )) As ptwkt;
------------------------------------------
POINT(131.59149149528952 101.89887534906197)
انظر أيضًا
ST_3DClosestPoint, ST_Distance, ST_LongestLine, ST_ShortestLine, ST_MaxDistance