Question

Dissolver removes certain polygons and creates new polygons on those edges

  • 20 July 2017
  • 7 replies
  • 35 views

Hi,

My problem/curiosity is similar to:

some-polygons-disappear-with-dissolver

dissolver-not-working-as-expected

I'm working on FME desktop 2017.0.1.1

FME level: Rookie

Situation: I put a buffer on a road network, and clipped a smaller buffer of that road network out of it. I want to assign a specific weight value to the remaining buffer. Working with two buffers created some extra lines within the polygons which I would like to remove before going on with further calculations. Before using the Dissolver transformer I used the AreaOnAreaOverlayer. Using the Dissolver transformer worked for all, but 6 locations. With working I mean removing the inner lines from the existing polygons. Two examples have been included with my issue.

I tried CoordinateRounder, Snapper, and ArcStroker between AreaOnAreaOverlayer and the Dissolver. I don't have any experience with these transformers, but they didn't seem to solve the issue.

Example 1, before the dissolve.

Example 1, after the dissolve.

Example 2, before the dissolve.

Example 2, after the dissolve.

What could introduce such a situation?

Cheers,


7 replies

Badge +7

I would try dissolving the individual buffers before clipping.

  1. Join your road centrelines (Group by: Road name) - reduce edge effects at road line segment ends.
  2. Create your two buffers (I've used 15m and 20m with End Cap set to None)
  3. Dissolve each buffer - minimising extra line "features" in final output
  4. Clip the larger buffer by the smaller and take the outside.
  5. Finally deaggregate to get individual features.

Outer buffers (yellow) from road centrelines (red). No extra lines within polygons:

Hope this helps.

I would try dissolving the individual buffers before clipping.

  1. Join your road centrelines (Group by: Road name) - reduce edge effects at road line segment ends.
  2. Create your two buffers (I've used 15m and 20m with End Cap set to None)
  3. Dissolve each buffer - minimising extra line "features" in final output
  4. Clip the larger buffer by the smaller and take the outside.
  5. Finally deaggregate to get individual features.

Outer buffers (yellow) from road centrelines (red). No extra lines within polygons:

Hope this helps.

It was indeed the order of steps which did the trick, thanks!

 

 

Setting the End Cap to None gave some funny small errors (See images). When the End Cap was set to Round, even those disappeared.

 

 

EDIT: Setting the End Cap to Square solved that small error in the images, yet then errors as in my original post started to pop up.

 

 

 

 

 

 

Userlevel 4
Badge +13
Hi @timothyweerman -- sorry you bumped into this. I see you have workaround now but if there's any way you could send us the original problem -- workspace and input data - to support@safe.com we'd love to dig in. We're working very hard to solve robustness issues in dissolve and clearly you found a bug here.

 

Userlevel 4
Badge +13
Hi @timothyweerman The Dissolver does the right thing in your original workspace when run with FME 2018.0 beta - www.safe.com/beta

 

Hi @timothyweerman The Dissolver does the right thing in your original workspace when run with FME 2018.0 beta - www.safe.com/beta

 

Thank you for the feedback.

 

 

Hi @timothyweerman The Dissolver does the right thing in your original workspace when run with FME 2018.0 beta - www.safe.com/beta

 

Thank you guys, I had the same issue: few polygones where just removed and few where "reversed" (holes becames polygons and polygon was removed: just like the images in timothyweerman's post). I installed FME 2018.0.0.0 as DanAtSafe suggested and it solved the problem.

 

 

2 original datasets to be dissolved together:

 

Dissolver result with FME 2017.1.0.0:

 

Dissolver result with FME 2018.0.0.0:

 

I know this has been posted quite a while ago, but one of our end-user pointed me to this post recently.

My advice would be : avoid dissolver when you can, because it is a tricky operation that consumes lots of resources (when it provides a correct output :-) ).

Here, you just have to aggregate the input lines before buffering to get the desired result.

When this is not possible, check that the processing that occurs after dissolving *really* requires to have few polygons that do not intersect as input. If your goal is to check that some features intersect a buffer, you do not need to have it dissolved... just check multiple buffers.

Sometimes, when you really need to use a geometry similar to the result of a dissolver, but can afford to approximate the result, using a concave hull can do the trick and be much quicker to compute depending on the initial geometries.

Fred

Reply