Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_CLOSESTPOINT

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

功能描述

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

语法格式

sql
GEOMETRY ST_CLOSESTPOINT(GEOMETRY geom1, GEOMETRY geom2);
GEOGRAPHY ST_CLOSESTPOINT(GEOGRAPHY geog1, GEOGRAPHY geog2, BOOLEAN use_spheroid = true);

参数说明

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

函数返回类型

GEOMETRY/GEOGRAPHY 类型

使用说明

  1. 如果是 3D 几何图形,请使用 ST_3DCLOSESTPOINT。

示例

POINT 和 LINESTRING 的最近点是点本身。 LINESTRING 和 POINT 的最近点是线上的点。

sql
SQL> SELECT ST_ASTEXT( ST_CLOSESTPOINT(pt,line)) AS cp_pt_line,
            ST_ASTEXT( ST_CLOSESTPOINT(line,pt)) AS cp_line_pt
         FROM (SELECT 'POINT (160 40)'::GEOMETRY AS pt,
                      'LINESTRING (10 30, 50 50, 30 110, 70 90, 180 140, 130 190)'::GEOMETRY AS line ) AS t;

+---------------+----------------------------------------------+
|  CP_PT_LINE   |                  CP_LINE_PT                  |
+---------------+----------------------------------------------+
| POINT(160 40) | POINT(125.75342465753425 115.34246575342466) |
+---------------+----------------------------------------------+

(1 row)

多边形 A 上距离多边形 B 最近的点:

sql
SQL> SELECT ST_ASTEXT( ST_CLOSESTPOINT(
                     'POLYGON ((190 150, 20 10, 160 70, 190 150))',
                     ST_BUFFER('POINT(80 160)', 30))) As ptwkt;

+----------------------------------------------+
|                    PTWKT                     |
+----------------------------------------------+
| POINT(131.59149149528952 101.89887534906195) |
+----------------------------------------------+

(1 row)