ST_LongestLine — 二つのジオメトリ間の2次元最長ラインを返します。
geometry ST_LongestLine(geometry g);
geometry ST_LongestLine(geometry g1, geometry g2);
二つのジオメトリのポイントで作られる2次元の最長ラインを返します。ラインはg1上から始まり、g2上で終わります。
最長ラインは常に二つの頂点となります。一つ以上の最長ラインが発見された場合には、この関数は最初のものを返します。ラインの長さはST_MaxDistanceが返す距離と同じです。
一つのジオメトリーだけが与えられるか、g1とg2が同じジオメトリーである場合には、ジオメトリーで最も離れた二つの頂点からなるラインが返ります。ラインの端点は ST_MinimumBoundingCircleで計算される円の上になります。
Availability: 1.5.0
Enhanced: 3.7.0 - 単一ジオメトリー入力に対応しました。
Longest line between a Point and a LineString.
SELECT 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)
Longest line between two polygons.
SELECT ST_LongestLine(
'POLYGON ((190 150,20 10,160 70,190 150))',
ST_Buffer('POINT(80 160)', 30)
) AS llinewkt;
LINESTRING(20 10,91.4805029709527 187.7163859753386)
一つのジオメトリを横切る最長のラインです。ラインの長さは最大距離と同じです。ラインの端点は最小境界円上に存在します。
SELECT ST_LongestLine(geom) AS llinewkt,
ST_MaxDistance(geom) AS max_dist,
ST_Length(ST_LongestLine(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