Skip to main content

Hello,

I'm trying to find a way to grow polygons to a minimum size, while keeping the entirety of the polygon within a larger polygon.

I have multiple polygons that area below a minimum area threshold of 400m2 which means they need to be grown to at least that size. However the problem that I have is that these polygons are (generally) already touching the boundaries of the larger polygons that they are within. What I would like to do is grow the smaller polygon to a certain size, ensuring that it does not cross any of the boundaries of the larger polygon.

Is this possible?

 

Thanks,

Fraser

Maybe create a custom transformer:

  1. Bufferer with amount x
  2. Clipper to outer polyon
  3. AreaCalculator + Tester to check if area >= 400m2
  4. If area is ok, send to output port
  5. If area is not ok, increment x and go to 1

Looping custom transformers are described here: https://docs.safe.com/fme/html/FME_Desktop_Documentation/FME_Workbench/Workbench/transformers_custom_looping.htm


Maybe create a custom transformer:

  1. Bufferer with amount x
  2. Clipper to outer polyon
  3. AreaCalculator + Tester to check if area >= 400m2
  4. If area is ok, send to output port
  5. If area is not ok, increment x and go to 1

Looping custom transformers are described here: https://docs.safe.com/fme/html/FME_Desktop_Documentation/FME_Workbench/Workbench/transformers_custom_looping.htm

Great idea! But notice that this custom transformer might go on forever if the size of the polygon cannot increase without intersecting neighboring polygons. I never looked into it, but maybe there is a way to set a upper limit of the amount of iterations?

 

 

You can always use a testfilter inside the loop that checks: 'if bufferer amount x is larger than y, then send the remaining data to another output port'.

Reply