Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_LONGESTLINE

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

功能描述

返回两个几何点之间的二维最长线段。

语法格式

sql
GEOMETRY ST_LONGESTLINE(GEOMETRY g1, GEOMETRY g2);

参数说明

  • g1:第一个 GEOMETRY 对象。
  • g2:第二个 GEOMETRY 对象。

函数返回类型

GEOMETRY 类型

使用说明

  1. 返回的线段从 g1 开始,到 g2 结束。
  2. 最长的线总是出现在两个顶点之间。
  3. 如果找到多个线,该函数将返回第一个最长的线。 直线的长度等于 ST_MAXDISTANCE 返回的距离。
  4. 如果 g1 和 g2 是相同的几何体,则返回几何体中相距最远的两个顶点之间的线。 直线的端点位于 ST_MINIMUMBOUNDINGCIRCLE 计算的圆上。

示例

点和线之间最长的线:

sql
SQL> SELECT ST_ASTEXT( ST_LONGESTLINE(
             'POINT (160 40)',
             'LINESTRING (10 30, 50 50, 30 110, 70 90, 180 140, 130 190)' )
             ) AS lline;

+----------------------------+
|           LLINE            |
+----------------------------+
| LINESTRING(160 40,130 190) |
+----------------------------+

(1 row)

两个多边形之间最长的线:

sql
SQL> SELECT ST_AsText( ST_LongestLine(
             'POLYGON ((190 150, 20 10, 160 70, 190 150))',
             ST_Buffer('POINT(80 160)', 30)
                 ) ) AS llinewkt;

+------------------------------------------------------+
|                       LLINEWKT                       |
+------------------------------------------------------+
| LINESTRING(20 10,91.4805029709527 187.7163859753386) |
+------------------------------------------------------+

(1 row)

跨单个几何体的最长线。 线的长度等于最大距离。 线的端点位于最小边界圆上。

sql
SQL> SELECT ST_AsText( ST_LongestLine( geom, geom)) AS llinewkt,
                       ST_MaxDistance( geom, geom) AS max_dist,
                       ST_Length( ST_LongestLine(geom, geom)) AS lenll
     FROM (SELECT 'POLYGON ((40 180, 110 160, 180 180, 180 120, 140 90, 160 40, 80 10, 70 40, 20 50, 40 180),
                   (60 140, 99 77.5, 90 140, 60 140))'::geometry AS geom) AS t;

+---------------------------+--------------+--------------+
|         LLINEWKT          |   MAX_DIST   |    LENLL     |
+---------------------------+--------------+--------------+
| LINESTRING(180 180,20 50) | 2.061553e+02 | 2.061553e+02 |
+---------------------------+--------------+--------------+

(1 row)