Question

Issues with dissolver when donuts/holes

  • 15 July 2019
  • 7 replies
  • 11 views

Badge +4

Hi all,

 

I am new to FME and I am trying to solve the following problem:

 

I have a set of 24 .shp. Each shp comes from the buffer line, and each has more than 50,000 characteristics. Each one contains polygons and donuts. When I read it together, I have a lot of polygons and holes overlapped.

I have to dissolve the shp set because I need the fused surface of the buffers clearly, without overlays.

Although I have tried to dissolve it by different methods such as extracting holes, dissolving and adding holes afterwards, or dividing the data set with a tiler and dissolving it based on groups (row, column), the output is never what you expect, having filled holes or partially undissolved areas.

 

I think the dissolver does not work properly because there are too many overlaps, holes in a single feature and holes between features -from reading the entire set .shp in a single reader-

 

I have attached an image of a shp containing the 24 shp merged, but with no dissolver and a image of unexpected output (in green).

 

Any help or suggestion will be appreciated.

Thank you,

 

Pol

 


7 replies

Badge +22

I agree this is a bug, you should send your sample data to safe.

 

 

In similar situations, setting the tolerance has helped.

Something to try to get a result in the meantime if the above doesn't work, is using one of the following transformer before the dissolver:

DonutBridgeBuilder

ArenAreaOverlayer

Badge +4

I agree this is a bug, you should send your sample data to safe.

 

 

In similar situations, setting the tolerance has helped.

Something to try to get a result in the meantime if the above doesn't work, is using one of the following transformer before the dissolver:

DonutBridgeBuilder

ArenAreaOverlayer

Hi @jdh

I'm using FME 2016, so there's no tolerance on the dissolver, I think. But, anyway, what tolerenace are you referring?

I've tried DonutBridgeBuilder and there's no good results.

AreaonAreaOverlay sounds good, but I don't know how to operate. I suppose must be a filter just after AreaonAreaOverlay, filtering the values for _overlaps attribute. Still, after this, I would not know what to do. Where to continue?

This is an image of my workspace.

Thank you,

 

Pol

Badge +22

Hi @jdh

I'm using FME 2016, so there's no tolerance on the dissolver, I think. But, anyway, what tolerenace are you referring?

I've tried DonutBridgeBuilder and there's no good results.

AreaonAreaOverlay sounds good, but I don't know how to operate. I suppose must be a filter just after AreaonAreaOverlay, filtering the values for _overlaps attribute. Still, after this, I would not know what to do. Where to continue?

This is an image of my workspace.

Thank you,

 

Pol

Tolerance is a parameter that was introduce in FME 2018, it's not available in 2016.

 

 

Do the results of the AreaOnAreaOverlayer look good? (No missing/ inverse geometry)

 

If so, what happens if you send the entire results into a single dissolver?

Userlevel 3
Badge +17

Hi @pcarrerabalsell, I'm not sure it's your case, but the Dissolver could generate an unexpected result if the source areas had self-intersections. I think it's worth to try repairing them with the GeometryValidator (Issue: Self-Intersectios in 2D).

Userlevel 3
Badge +17

Hi @pcarrerabalsell, I'm not sure it's your case, but the Dissolver could generate an unexpected result if the source areas had self-intersections. I think it's worth to try repairing them with the GeometryValidator (Issue: Self-Intersectios in 2D).

Reproduction

  • Left (Light Blue): Overlapping Donuts, each has a self-intersection (left-bottom corner)
  • Right (Orange): Output from the Dissolver in FME 2016.1

Badge +4

Tolerance is a parameter that was introduce in FME 2018, it's not available in 2016.

 

 

Do the results of the AreaOnAreaOverlayer look good? (No missing/ inverse geometry)

 

If so, what happens if you send the entire results into a single dissolver?

@jdh I've tried to run the above workflow with only 4 .shps (over 200.000 features) and it works! I've processed separately overlaped features and non-overlaped features, first dissolving overlapped features and then dissolving it together with non overlapped features. I don't know exactly why, but it works.

 

I'm gonna try it with the 24 .shp. Im a bit frightened about timelapse of execution, so we will see.

 

Cheers,

Badge +4

Hi @pcarrerabalsell, I'm not sure it's your case, but the Dissolver could generate an unexpected result if the source areas had self-intersections. I think it's worth to try repairing them with the GeometryValidator (Issue: Self-Intersectios in 2D).

Hi @takashi,

buffers come from a topologically validated set of polylines, and each shp has been dissolved before. Even so, I've detected some minor errors on the output. I've executed de GeometryValidator and yes, there's some Self-intersections.

Now I have no other problem than too much use of pc resources when executing for 24 shp's -continously message 'Optimizing memory Usage" shown on the log...I use 32-bit FME on a 32 bit machine.

 

Thank you so much,

Pol

Reply