名称

ST_LongestLine — 返回两个几何图形之间二维最长线。

概要

geometry ST_LongestLine(geometry g1, geometry g2);

描述

返回两个几何图形的点之间的二维最长线。返回的线从 g1 开始,在 g2 结束。

最长线始终出现在两个顶点之间。如果找到多个最长线,该函数将返回第一个最长线。线的长度等于 ST_MaxDistance 返回的距离。

如果 g1 和 g2 是同一个几何图形,则返回几何图形中距离最远的两个顶点之间的线。线的端点位于由 ST_MinimumBoundingCircle 计算的圆上。

可用性:1.5.0

示例

点和线之间的最长线

SELECT ST_AsText( ST_LongestLine(
        'POINT (160 40)',
        'LINESTRING (10 30, 50 50, 30 110, 70 90, 180 140, 130 190)' )
	) AS lline;
-----------------
LINESTRING(160 40,130 190)

两个多边形之间的最长线

SELECT ST_AsText( ST_LongestLine(
        'POLYGON ((190 150, 20 10, 160 70, 190 150))',
        ST_Buffer('POINT(80 160)', 30)
            ) ) AS llinewkt;
-----------------
LINESTRING(20 10,105.3073372946034 186.95518130045156)

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

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(20 50,180 180) | 206.15528128088303 | 206.15528128088303

另请参阅

ST_MaxDistanceST_ShortestLineST_3DLongestLineST_MinimumBoundingCircle