제목

ST_3DLongestLine — 두 도형 사이의 3차원 최장(longest) 라인을 반환합니다.

요약

geometry ST_3DLongestLine(geometry g1, geometry g2);

설명

두 도형 사이의 3차원 최장(longest) 라인을 반환합니다. 하나 이상의 최장 라인이 있을 경우, 이 함수는 첫 번째 최장 라인만 반환할 것입니다. 반환되는 라인은 항상 g1에서 시작해서 g2에서 끝납니다. 이 함수가 반환하는 라인의 3차원 길이는 ST_3DMaxDistance 함수가 g1과 g2에 대해 반환하는 길이와 언제나 동일합니다.

2.0.0 버전부터 사용할 수 있습니다.

변경 사항: 2.2.0 버전부터 2D 도형 두 개를 입력할 경우, (존재하지 않는 Z을 0으로 가정하는 예전 습성 대신) 2D 포인트를 반환합니다. 2D 및 3D의 경우, 더 이상 Z가 없을 때 Z를 0으로 가정하지 않습니다.

This function supports 3d and will not drop the z-index.

This function supports Polyhedral surfaces.

예시

Longest line between a LineString and a Point, comparing the 3D and 2D results.

Code
SELECT ST_3DLongestLine(line, pt) AS lol3d_line_pt, ST_LongestLine(line, pt) AS lol2d_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;
래스터 출력
lol3d_line_pt           |       lol2d_line_pt
-----------------------------------+----------------------------
 LINESTRING(50 75 1000,100 100 30) | LINESTRING(98 190,100 100)
Figure
Geometry figure for visual-st-3dlongestline-01

Longest line between a LineString and a MultiPoint, comparing the 3D and 2D results.

Code
SELECT ST_3DLongestLine(line, pt) AS lol3d_line_pt, ST_LongestLine(line, pt) AS lol2d_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;
래스터 출력
lol3d_line_pt          |      lol2d_line_pt
---------------------------------+--------------------------
 LINESTRING(98 190 1,50 74 1000) | LINESTRING(98 190,50 74)
Figure
Geometry figure for visual-st-3dlongestline-02

Longest line between a Polygon and a MultiLineString, comparing the 3D and 2D results.

Code
SELECT ST_3DLongestLine(poly, mline) AS lol3d, ST_LongestLine(poly, mline) AS lol2d
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;
래스터 출력
lol3d             |          lol2d
------------------------------+--------------------------
 LINESTRING(175 150 5,1 10 2) | LINESTRING(175 150,1 10)
Figure
Geometry figure for visual-st-3dlongestline-03