Question

Clipping a series of overlapping elipses


Badge

Does anyone know a way of clipping a series of overlapping polygons that are in a time sequenced order like you see when a cyclone moves across the land and they are shown as a series of wind area circles. I am trying to remove the overlapping areas from all polygons as well as keep the order of the polygons. The first polygon would have to clip any other polygon that overlaps it then what's left of the second polygon would have to clip the third etc. I have attached a sample shape file as an example.


7 replies

Userlevel 2
Badge +17

Hi @johnm, I found two possible ways. Assuming that the attribute called "Name" stores sequential number of the cyclone in the time ascending order.

A:

B:

Hope this helps.

Userlevel 2
Badge +17

Hi @johnm, I found two possible ways. Assuming that the attribute called "Name" stores sequential number of the cyclone in the time ascending order.

A:

B:

Hope this helps.

Probably the clipping priority was wrong. Correct these transformer parameters in the previous workflows.

 

 

Badge

Hi @takashi ,Thanks for this I will give it a go. The name attribute is just a substitute for the ascending timestamp attribute which is what you normally get for a cyclone. I had also worked out a rough solution that involved the AreaOnAreaOverlayer then a Dissolver(Group by Name) into a DonutHoleExtractor, but your solution looks much more elegant. Cheers, John

Userlevel 2
Badge +17

Hi @takashi ,Thanks for this I will give it a go. The name attribute is just a substitute for the ascending timestamp attribute which is what you normally get for a cyclone. I had also worked out a rough solution that involved the AreaOnAreaOverlayer then a Dissolver(Group by Name) into a DonutHoleExtractor, but your solution looks much more elegant. Cheers, John

The AreaOnAreaOverlayer can also be used in this workflow and it might be more elegant.

 

Userlevel 4
Badge +25

Hi @johnm

The other way I would try is the SliverRemover transformer. A SliverRemover takes the overlap and assigns it to one of the overlapping features (I'm assuming you don't just want to cut it out completely).

Here is my workspace:

I use a SliverRemover with a priority attribute, which for your data is name. However, the result is the reverse of what I think you want. So first I create Name2, which is Name in the reverse order (it's not a great method here - hard coded at 5 features - but let's see if the SliverRemover is giving what you want before we worry too much).

The results:

I hope this helps. The SliverRemover isn't well known - and this isn't really what it's intended for - but I think it does a good job. If it's not correct, could you post a screenshot of what a correct output would look like?

Cheers

Mark

Badge

cyclone-graphics.zipHi @Mark2AtSafe Thanks for your reply. The second solution by takashi seems to be the best for me which I have reproduced below. I have attached a more realistic example where in this case the attribute to order is FCASTTIME which is actually a timestamp attribute for a specific Cyclone. Cheers, John

Badge +3

@johnm

There is a more direct way to do it.

reates the "moonlets"

Reply