Question

Aggregate diagonal touching polygons

  • 27 February 2013
  • 5 replies
  • 1 view

Hello,

 

I have a dataset that in which I need to reduce records. The dataset is made up of a grid that covers a very large area and has been exported from a raster dataset. I will call each unit of this grid a cell, which is essentially a square of equal sides and measures some 0.5 ha.

 

 

The first method that I have used to reduce records was the DISSOLVE transformer and grouping by several attributes, which works great for all cells that have common boundaries - no surprise there.

 

 

I would like to include cells that only have a corner point in common and can be grouped by the same several attributes.

 

 

Is there a transformer that would carry out this sort of task?

 

 

Regards

 

Benton

5 replies

Userlevel 4
I would first use a SpatialFiler to find the polgons that intersect (with a Group By on your attributes), followed by either an Aggregator or a Bufferer (with a tiny amount), depending on your requirements. 

 

 

David
Hi Benton,

 

 

I created a grid and then used the Counter to give every polygon an ID.

 

In the next step I used the AttributeRangeMapper to build groups of polygons that should be grouped together. The output attribute _looked_up I used in the Dissolver.

 

 

Hopefully this approach works for you,

 

best regards,

 

Stefan
Userlevel 4
Badge +25
Yes, I would use the SpatialFilter. The "touches" predicate seems to be the one most closely matching your need:

 

 

Hi all,

 

 

Thank You for your assistance.

 

 

I have employed the transformer named SpatialFilter and used the test TOUCH. This has been successful ... to a point.

 

 

I now have polygons aggregated (by Group By) across the whole dataset regardless of any spatial gap between them.  I need to have an aggregate that only aggregates polygons that touch each other, but when there is no touching, forms a new group of aggregate polygons.

 

 

Is this possible?

 

 

Regards

 

Ben
Hi Benton,

 

 

if all the polygons have an ID you could manually set up some TestFilter (AttributeRangeFilter) conditions to filter out polygons that touch each other.

 

After that you could use the Aggregator to create aggregates.

 

 

If your dataset is not that large, this could be an approach...

 

 

Best regards,

 

Stefan

Reply