QGIS – Calculating Width of Unusually Shaped Polygon

hydrologyqgis

I have a large unusually shaped polygon of surface water within 15km radius of a site. I would like to calculate the widths of all the polygons. I would be open to calculating it at regular intervals, I'm just not sure how to do this.

It is a multipart polygon, so it's not all one big thing. I do have a center line layer, if that helps.

I have tried:

  • Oriented minimum bounding boxes (but this wasn't appropriate as the squares were way to big for each section).
  • Add geometry attributes (provides only area and perimeter)

enter image description here

The following images are zoomed in versions of the above map:

This is obviously only a quick sketch of how it may work for a lake shape. Ignore the lines going parallel to the lake side. It is the widths going across that I'd be interested in.

enter image description here

Similarly with the river width. I'm interested in the channel widths.

enter image description here

Best Answer

  1. Find the centerline using v.voronoi.skeleton
  2. Create points along the centerline (Points along geometry)
  3. Create perpendicular lines to the points with Geometry by expression: extend( make_line( $geometry, project ( $geometry, 500, radians("angle"-90)) ), 500, 0 ) Adjust 500 which is the line length, 500 is about the max width of my river
  4. Clip these with the input polygon layer
  5. Add geometry attributes to calculate line length

enter image description here