Name

ST_LongestLine — 二つのジオメトリ間の2次元最長ラインを返します。

Synopsis

geometry ST_LongestLine(geometry g1, geometry g2);

説明

二つのジオメトリのポイントで作られる2次元の最長ラインを返します。ラインはg1上から始まり、g2上で終わります。

最長ラインは常に二つの頂点となります。一つ以上の最長ラインが発見された場合には、この関数は最初のものを返します。ラインの長さはST_MaxDistanceが返す距離と同じです。

g1とg2が同じジオメトリの場合には、ジオメトリで最も遠くに離れる2頂点を結ぶラインが返ります。このラインの端点はST_MinimumBoundingCircleで計算された円の上に存在します。

Availability: 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