ST_SHORTESTLINE
📄字数 824
👁️阅读量 加载中...
功能描述
如果几何/地理是 Surface、MultiSurface(Polygon、MultiPolygon),则返回其 2D 周长。
语法格式
sql
GEOMETRY ST_SHORTESTLINE(GEOMETRY geom1, GEOMETRY geom2);
GEOGRAPHY ST_SHORTESTLINE(GEOGRAPHY geom1, GEOGRAPHY geom2, BOOLEAN use_spheroid = TRUE);参数说明
- geom1:第一个目标 GEOMETRY/GEOGRAPHY 对象。
- geom2:第一个目标 GEOMETRY/GEOGRAPHY 对象。
- use_spheroid:距离测量是否使用椭球体,可选。
- TRUE:使用椭球体。
- FALSE:在球面上进行测量,计算更快。
函数返回类型
GEOMETRY/GEOGRAPHY 类型
使用说明
- 返回的线从 geom1 开始,到 geom2 结束。
- 如果 geom1 和 geom2 相交,结果是一条起点和终点位于交点的线。
- 线的长度与 ST_DISTANCE 返回的长度相同。
- 对于几何类型,周长测量的单位由几何的空间参考系统指定。
示例
Point 和 LineString 之间的最短线:
sql
SQL> SELECT ST_AsText( ST_ShortestLine(
'POINT (160 40)',
'LINESTRING (10 30, 50 50, 30 110, 70 90, 180 140, 130 190)')
) As sline;
+----------------------------------------------------------+
| SLINE |
+----------------------------------------------------------+
| LINESTRING(160 40,125.75342465753425 115.34246575342466) |
+----------------------------------------------------------+
(1 row)Polygons之间的最短线:
sql
SQL> SELECT ST_AsText( ST_ShortestLine(
'POLYGON ((190 150, 20 10, 160 70, 190 150))',
ST_Buffer('POINT(80 160)', 30)
) ) AS llinewkt;
+-----------------------------------------------------------------------------------------+
| LLINEWKT |
+-----------------------------------------------------------------------------------------+
| LINESTRING(131.59149149528952 101.89887534906195,101.21320343559643 138.78679656440357) |
+-----------------------------------------------------------------------------------------+
(1 row)