Skip to main content
Question

Detecting and creating new polygons where parts of A do not overlap parts of B

  • June 8, 2023
  • 7 replies
  • 17 views

scarter
Contributor
Forum|alt.badge.img+10

Hello Forum.

 

I have two polygon datasets (see attached image). I'd like to create a third polygon dataset showing me the sections of A that do not overlap with B. So, it would create me the polygons as highlighted in C in attached image.

I could do this via a few steps in a desktop GIS but I need to include it as part of a larger automated data flow in FME Desktop (Form).

 

Thanks,Swk_clip_polygons

7 replies

ebygomm
Influencer
Forum|alt.badge.img+44
  • Influencer
  • 3422 replies
  • June 8, 2023

Clip polygon A with Polygon B and keep the output from the Outside Port, followed by a deaggregator


dustin
Influencer
Forum|alt.badge.img+31
  • Influencer
  • 627 replies
  • June 8, 2023

I would use an AreaOnAreaOverlayer, generating a list on the attribute that uniquely identifies if the area is A or B (this could be the fme_basename format attribute, if they are from different datasets). Then, feed those results into a Tester or TestFilter where the condition would be _overlaps = 1, AND _list{0}.identifier = A.


scarter
Contributor
Forum|alt.badge.img+10
  • Author
  • Contributor
  • 125 replies
  • June 8, 2023

I would use an AreaOnAreaOverlayer, generating a list on the attribute that uniquely identifies if the area is A or B (this could be the fme_basename format attribute, if they are from different datasets). Then, feed those results into a Tester or TestFilter where the condition would be _overlaps = 1, AND _list{0}.identifier = A.

Thanks for that, ddb. I’ve added the areaOnAreaOverlayer and a TestFilter. I’ve added the first test condition into TestFilter of @value(_overlaps_) = 1. However I cannot see a value called _list{0}. Where does that come from? Thanks, Stuart

dustin
Influencer
Forum|alt.badge.img+31
  • Influencer
  • 627 replies
  • June 8, 2023
Thanks for that, ddb. I’ve added the areaOnAreaOverlayer and a TestFilter. I’ve added the first test condition into TestFilter of @value(_overlaps_) = 1. However I cannot see a value called _list{0}. Where does that come from? Thanks, Stuart

You'll need to make sure you set it up in the transformer. _list is the List Name that you give it.image


scarter
Contributor
Forum|alt.badge.img+10
  • Author
  • Contributor
  • 125 replies
  • June 8, 2023
Thanks for that, ddb. I’ve added the areaOnAreaOverlayer and a TestFilter. I’ve added the first test condition into TestFilter of @value(_overlaps_) = 1. However I cannot see a value called _list{0}. Where does that come from? Thanks, Stuart
Thanks. “You'll need to make sure you set it up in the transformer” In the Test Filter of AreaOnAreaOverlayer?

dustin
Influencer
Forum|alt.badge.img+31
  • Influencer
  • 627 replies
  • June 8, 2023
Thanks for that, ddb. I’ve added the areaOnAreaOverlayer and a TestFilter. I’ve added the first test condition into TestFilter of @value(_overlaps_) = 1. However I cannot see a value called _list{0}. Where does that come from? Thanks, Stuart

In the AreaOnAreaOverlayer. Although, the solution from @ebygomm​ is a really good one as well. I'm used to working with extremely dense data, and sometimes the Clipper can struggle with it. So I usually default to the AreaOnAreaOverlayer method.


scarter
Contributor
Forum|alt.badge.img+10
  • Author
  • Contributor
  • 125 replies
  • June 8, 2023
Thanks for that, ddb. I’ve added the areaOnAreaOverlayer and a TestFilter. I’ve added the first test condition into TestFilter of @value(_overlaps_) = 1. However I cannot see a value called _list{0}. Where does that come from? Thanks, Stuart
Thanks.