名称

ST_3DClosestPoint — 返回 g1 上最接近 g2 的 3D 点。 这是 3D 最短线的第一个点。

大纲

geometry ST_3DClosestPoint(geometry g1, geometry g2);

描述

返回 g1 上最接近 g2 的 3 维点。 这是 3D 最短线的第一个点。 3D最短线的3D长度是3D距离。

该函数支持 3d 并且不会丢失 z-index。

该函数支持多面体曲面。

可用性: 2.0.0

更改:2.2.0 - 如果输入 2 个 2D 几何图形,则返回 2D 点(而不是假设缺失 Z 为 0 的旧行为)。 在 2D 和 3D 情况下,对于缺失的 Z,Z 不再被假定为 0。

示例

Compare the 3D closest point to the 2D closest point for a LineString and a Point.

Code
WITH input AS (
  SELECT 'POINT(100 100 30)'::geometry AS pt,
         'LINESTRING (20 80 20,98 190 1,110 180 3,50 75 1000)'::geometry AS line
)
SELECT ST_3DClosestPoint(line, pt) AS cp3d_line_pt,
       ST_ClosestPoint(line, pt) AS cp2d_line_pt
FROM input;
栅格输出
-[ RECORD 1 ]--+--------------------------------------------------------
cp3d_line_pt   | POINT(54.69937988676193 128.93502291722837 11.547586950660556)
cp2d_line_pt   | POINT(73.07692307692307 115.38461538461539)
Figure
Geometry figure for visual-st-3dclosestpoint-01

Compare the 3D closest point to the 2D closest point for a LineString and a MultiPoint.

Code
WITH input AS (
  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
)
SELECT ST_3DClosestPoint(line, pt) AS cp3d_line_pt,
       ST_ClosestPoint(line, pt) AS cp2d_line_pt
FROM input;
栅格输出
-[ RECORD 1 ]--+--------------------------------------------------------
cp3d_line_pt   | POINT(54.69937988676193 128.93502291722837 11.547586950660556)
cp2d_line_pt   | POINT(50 75)
Figure
Geometry figure for visual-st-3dclosestpoint-02

Compare the 3D closest point to the 2D closest point for a Polygon and a MultiLineString.

Code
WITH input AS (
  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
)
SELECT ST_3DClosestPoint(poly, mline) AS cp3d,
       ST_ClosestPoint(poly, mline) AS cp2d
FROM input;
栅格输出
-[ RECORD 1 ]--+---------------------------------------
cp3d           | POINT(40.45454545454545 53.63636363636364 5)
cp2d           | POINT(20 40)
Figure
Geometry figure for visual-st-3dclosestpoint-03