Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_3DCLOSESTPOINT

📄字数 1.3K
👁️阅读量 加载中...

功能描述

返回 geom1 上最接近 geom2 的三维点。

语法格式

sql
GEOMETRY ST_3DCLOSESTPOINT(GEOMETRY geom1, GEOMETRY geom2);

参数说明

  • geom1:第一个目标 GEOMETRY 对象。
  • geom2:第二个目标 GEOMETRY 对象。
  • geog1:第一个目标 GEOGRAPHY 对象。
  • geog2:第二个目标 GEOGRAPHY 对象。
  • use_spheroid:距离测量是否使用椭球体,可选。
    • TRUE:使用椭球体。
    • FALSE:在球面上进行测量,计算更快。

函数返回类型

GEOMETRY/GEOGRAPHY 类型

使用说明

  1. 3D 最短线的第一个点。 3D最短线的3D长度是3D距离。
  2. 该函数支持 3d 并且不会丢失 z-index。
  3. 该函数支持多面体曲面。

示例

线串和点 3D/2D 最近点:

sql
SQL> SELECT ST_ASEWKT(ST_3DCLOSESTPOINT(line,pt)) AS cp3d_line_pt,
                     ST_ASEWKT(ST_CLOSESTPOINT(line,pt)) As cp2d_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;

+----------------------------------------------------------------+---------------------------------------------+
|                          CP3D_LINE_PT                          |                CP2D_LINE_PT                 |
+----------------------------------------------------------------+---------------------------------------------+
| POINT(54.69937988676193 128.93502291722837 11.547586950660556) | POINT(73.07692307692308 115.38461538461539) |
+----------------------------------------------------------------+---------------------------------------------+

(1 row)

线串和多点 3D/2D 最近点:

sql
SQL> SELECT ST_AsEWKT(ST_3DCLOSESTPOINT(line,pt)) AS cp3d_line_pt,
                     ST_ASEWKT(ST_CLOSESTPOINT(line,pt)) As cp2d_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;

+----------------------------------------------------------------+--------------+
|                          CP3D_LINE_PT                          | CP2D_LINE_PT |
+----------------------------------------------------------------+--------------+
| POINT(54.69937988676193 128.93502291722837 11.547586950660556) | POINT(50 75) |
+----------------------------------------------------------------+--------------+

(1 row)

线串和多边形 3D/2D 最近点:

sql
SQL> SELECT ST_ASEWKT(ST_3DCLOSESTPOINT(poly, mline)) As cp3d,
         ST_ASEWKT(ST_CLOSESTPOINT(poly, mline)) As cp2d
             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;

+----------------------------------------------+--------------+
|                     CP3D                     |     CP2D     |
+----------------------------------------------+--------------+
| POINT(40.45454545454545 53.63636363636364 5) | POINT(20 40) |
+----------------------------------------------+--------------+

(1 row)