ST_LongestLine — Renvoie la ligne 2D la plus longue entre deux géométries.
geometry ST_LongestLine(
geometry g1, geometry g2)
;
Renvoie la plus longue ligne bidimensionnelle entre les points de deux géométries. La ligne renvoyée commence sur g1
et se termine sur g2
.
La ligne la plus longue se trouve toujours entre deux sommets. La fonction renvoie la première ligne la plus longue si plusieurs sont trouvées. La longueur de la ligne est égale à la distance renvoyée par ST_MaxDistance.
Si g1 et g2 sont la même géométrie, renvoie la ligne entre les deux sommets les plus éloignés l'un de l'autre dans la géométrie. Les extrémités de la ligne se trouvent sur le cercle calculé par ST_MinimumBoundingCircle.
Disponibilité : 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