Is there a possibility to determine the longest side of a polygon with QGIS?

As I need to do that for hundreds of polygons I would prefer an automized method (like a plugin).

So far my idea was:

  • transforming a polygon into a line
  • cut it on the vertices
  • measure the length
  • here I became stuck, how to become the longest line without checking the whole bunch of lines one by one?

If you can use PostGIS, try using the ST_LongestLine function like this:

SELECT ST_LongestLine(geom, geom)
FROM mypolytable;

This will find the longest line that can be drawn within each polygon geometry. Note that I'm using this function that references the same geometry column geom twice.

| improve this answer | |
  • Thanks for your answer. The function you mentioned returns the 2-dimensional longest line points of two geometries but Im looking for the longest line of a single polygon. Am i wrong? Anybody else an idea?? – ragavendra Apr 24 '13 at 15:53
  • Two geometries is actually one geometry when you reference the same geometry twice, as I have described. Did you try it? – Mike T Apr 24 '13 at 23:40

Let's assume there is a polygon layer "polygons" (pink) with its corresponding attribute table accordingly, see image below.


Step 1. Proceed with "Polygons to lines".


Step 2. Apply "Extract vertices" two times, it will be important for the next step.


Step 3. Make use of "Join by lines (hub lines)" between the two layers with vertices. Afterwards the application of "Fix geometries", "Remove null geometries" and "Delete duplicate geometries" is probable.


Step 4. Make use of "Extract by location" (are within for geometrical predicate) between the Results of the Step 3 and Step 1.


Step 5. Use "Extract by expression" using the following expression
$length = maximum($length, "id")


| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.