名称

ST_3DDistance — 返回投影单位中两个几何之间的三维笛卡尔最小距离(基于空间参考)。

语法

float ST_3DDistance(geometry g1, geometry g2);

描述

返回投影单位(空间参考单位)中两个几何之间的三维笛卡尔最小距离。

此函数支持 3D,不会丢弃 z 索引。

此函数支持多面体曲面。

此方法实现了 SQL/MM 规范。

SQL-MM ISO/IEC 13249-3

可用性:2.0.0

已更改:2.2.0 - 对于 2D 和 3D,不再假设缺失的 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

另请参见

ST_DistanceST_3DClosestPointST_3DDWithinST_3DMaxDistanceST_3DShortestLineST_Transform