الاسم
ST_3DDistance — تُعيد أقل مسافة ديكارتية ثلاثية الأبعاد (بناءً على النظام المرجعي المكاني) بين شكلين بوحدات الإسقاط.
المختصر
float ST_3DDistance(geometry g1, geometry g2);
الوصف
تُعيد أقل مسافة ديكارتية ثلاثية الأبعاد بين شكلين بوحدات الإسقاط (وحدات النظام المرجعي المكاني).
تدعم هذه الدالة الأبعاد الثلاثية ولا تُسقط قيمة Z.
تدعم هذه الدالة الأسطح متعددة الوجوه (Polyhedral surfaces).
تطبّق هذه الدالة مواصفة SQL/MM. SQL-MM ISO/IEC 13249-3
متاحة منذ: 2.0.0
تغيّرت في: 2.2.0 - في حالة شكل ثنائي الأبعاد وآخر ثلاثي الأبعاد، لم يعد يُفترض أن Z المفقودة تساوي 0.
تغيّرت في: 3.0.0 - أُزيلت نسخة SFCGAL
أمثلة
-- Geometry example - units in meters (SRID: 2163 US National Atlas Equal area) (3D point and line compared 2D point and line)
-- Note: currently no vertical datum support so Z is not transformed and assumed to be same units as final.
SELECT ST_3DDistance(
ST_Transform('SRID=4326;POINT(-72.1235 42.3521 4)'::geometry,2163),
ST_Transform('SRID=4326;LINESTRING(-72.1260 42.45 15, -72.123 42.1546 20)'::geometry,2163)
) As dist_3d,
ST_Distance(
ST_Transform('SRID=4326;POINT(-72.1235 42.3521)'::geometry,2163),
ST_Transform('SRID=4326;LINESTRING(-72.1260 42.45, -72.123 42.1546)'::geometry,2163)
) As dist_2d;
dist_3d | dist_2d
------------------+-----------------
127.295059324629 | 126.66425605671
-- Multilinestring and polygon both 3d and 2d distance
-- Same example as 3D closest point example
SELECT ST_3DDistance(poly, mline) As dist3d,
ST_Distance(poly, mline) As dist2d
FROM (SELECT 'POLYGON((175 150 5, 20 40 5, 35 45 5, 50 60 5, 100 100 5, 175 150 5))'::geometry as poly,
'MULTILINESTRING((175 155 2, 20 40 20, 50 60 -2, 125 100 1, 175 155 1), (1 10 2, 5 20 1))'::geometry as mline) as foo;
dist3d | dist2d
-------------------+--------
0.716635696066337 | 0