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 - 如果輸入兩個 2D 幾何物件,則會傳回 2D 點(而不是舊版行為假設遺失的 Z 為 0)。如果輸入 2D 和 3D 物件,則不再假設遺失的 Z 為 0。
此函數支援 3D,且不會捨棄 z 索引。
此函數支援多面體表面。
線字串和點 -- 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)
|