ST_3DShortestLine — 返回两个几何图形之间的 3D 最短线
geometry ST_3DShortestLine(
geometry g1, geometry g2)
;
返回两个几何图形之间的 3 维最短线。 如果函数找到多个最短线,则该函数将仅返回第一个最短线。 如果 g1 和 g2 仅相交于一个点,则该函数将返回一条起点和终点均位于该交点的线。 如果 g1 和 g2 与多个点相交,该函数将返回一条起点和终点位于同一点的线,但它可以是任何相交点。 返回的线始终以 g1 开始并以 g2 结束。 此函数返回的线的 3D 长度始终与 ST_3DDistance 返回的 g1 和 g2 相同。
可用性: 2.0.0
更改:2.2.0 - 如果输入 2 个 2D 几何图形,则返回 2D 点(而不是假设缺失 Z 为 0 的旧行为)。 在 2D 和 3D 情况下,对于缺失的 Z,Z 不再被假定为 0。
该函数支持 3d 并且不会丢失 z-index。
该函数支持多面体曲面。
线串和点——3d 和 2d 最短线 SELECT ST_AsEWKT(ST_3DShortestLine(line,pt)) AS shl3d_line_pt, ST_AsEWKT(ST_ShortestLine(line,pt)) As shl2d_line_pt FROM (SELECT 'POINT(100 100 30)'::geometry As pt, 'LINESTRING (20 80 20, 98 190 1, 110 180 3, 50 75 1000)'::geometry As line ) As foo; shl3d_line_pt | shl2d_line_pt ----------------------------------------------------------------------------+------------------------------------------------------ LINESTRING(54.6993798867619 128.935022917228 11.5475869506606,100 100 30) | LINESTRING(73.0769230769231 115.384615384615,100 100)
|
线串和多点——3d 和 2d 最短线 SELECT ST_AsEWKT(ST_3DShortestLine(line,pt)) AS shl3d_line_pt, ST_AsEWKT(ST_ShortestLine(line,pt)) As shl2d_line_pt FROM (SELECT 'MULTIPOINT(100 100 30, 50 74 1000)'::geometry As pt, 'LINESTRING (20 80 20, 98 190 1, 110 180 3, 50 75 900)'::geometry As line ) As foo; shl3d_line_pt | shl2d_line_pt ---------------------------------------------------------------------------+------------------------ LINESTRING(54.6993798867619 128.935022917228 11.5475869506606,100 100 30) | LINESTRING(50 75,50 74)
|
多线串 和多边形 -3d 和 2d 最短线 SELECT ST_AsEWKT(ST_3DShortestLine(poly, mline)) As shl3d, ST_AsEWKT(ST_ShortestLine(poly, mline)) As shl2d FROM (SELECT ST_GeomFromEWKT('POLYGON((175 150 5, 20 40 5, 35 45 5, 50 60 5, 100 100 5, 175 150 5))') As poly, ST_GeomFromEWKT('MULTILINESTRING((175 155 2, 20 40 20, 50 60 -2, 125 100 1, 175 155 1), (1 10 2, 5 20 1))') As mline ) As foo; shl3d | shl2d ---------------------------------------------------------------------------------------------------+------------------------ LINESTRING(39.993580415989 54.1889925532825 5,40.4078575708294 53.6052383805529 5.03423778139177) | LINESTRING(20 40,20 40)
|