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 类型
使用说明
- 如果是 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)