Skip to main content
Question

Don't want AreaOnAreaOverlayer to merge polygons with duplicate geometry but different attributes


tim_wood
Contributor
Forum|alt.badge.img+8

I'm working with CodePoint Polygons (areas for Postcodes) and have developed a Workspace to count addresses in each Postcode that are inside and outside a certain area. I'm using AreaOnAreaOverlayer to split the polygons into 2 where they cross the border of the other area. However, the consquence of this is that Vertical Street* polygons get merged (I think the Tolerance parameter is doing this), which causes one of the Postcodes to be lost. This means I don't get an address count for it.

I've tried using Group By Postcode, but this crashes the process because there are too many unique Postcode values. A WorkspaceRunner to process each Postcode separately seems overkill. I can do it by Using Attributes From One Feature, creating a List of Postcodes, then using ListConcatenator etc to re-create the deleted polygons after AreaOnAreaOverlayer has merged them. But this seems a rather tortuous way of doing it.

Any suggestions?

* a Vertical Street is something like a tall office block where different floors have different Postcodes.

5 replies

gio
Contributor
Forum|alt.badge.img+15
  • Contributor
  • December 7, 2018

How about using the levels in the GroupBy of the AreaOnAreaOverlayer?

Basically concatenating the floors to the Code Point.

Assuming you have floors as an attribute.

Set all ground level objects that have no floor attribute to floor =0

If help is needed maybe post a sample data including a office block with floors.


tim_wood
Contributor
Forum|alt.badge.img+8
  • Author
  • Contributor
  • December 7, 2018
gio wrote:

How about using the levels in the GroupBy of the AreaOnAreaOverlayer?

Basically concatenating the floors to the Code Point.

Assuming you have floors as an attribute.

Set all ground level objects that have no floor attribute to floor =0

If help is needed maybe post a sample data including a office block with floors.

Hi @gio

I don't have floors as an attribute, just 2 (or more) identical polygons on top of each other but with different Postcode values.

Group By Postcode works if I just read in features for 2 Postcodes, but I had problems with the translation failing when running it on a bigger set of data. However it seems to be working OK now with No Parallelism, although it's slow.

I've been browsing through the Spatial Transformers Comparison Matrix and the Clipper looks like it might it produce the result I need, and might even perform better too.


nampreetatsafe
Safer
Forum|alt.badge.img+12
tim_wood wrote:

Hi @gio

I don't have floors as an attribute, just 2 (or more) identical polygons on top of each other but with different Postcode values.

Group By Postcode works if I just read in features for 2 Postcodes, but I had problems with the translation failing when running it on a bigger set of data. However it seems to be working OK now with No Parallelism, although it's slow.

I've been browsing through the Spatial Transformers Comparison Matrix and the Clipper looks like it might it produce the result I need, and might even perform better too.

Hi @tim_wood, would you be able to share more details about the crash (possibly a log file and workspace template to help us replicate the issue) when you tried grouping by PostCode in Parallel?

If you prefer you can open a case and provide any helpful information and attachments.


tim_wood
Contributor
Forum|alt.badge.img+8
  • Author
  • Contributor
  • December 19, 2018
nampreetatsafe wrote:

Hi @tim_wood, would you be able to share more details about the crash (possibly a log file and workspace template to help us replicate the issue) when you tried grouping by PostCode in Parallel?

If you prefer you can open a case and provide any helpful information and attachments.

Hi @Nampreet, I've changed the Workspace quite a lot since I had this issue (I'm now using SpatialFilter and Clipper rather than AreaOnAreaOverlayer) so I might not be able to re-create it. If I do, I'll raise a call for your attention.

I assumed the crash was because I tried to use parallel processing based on Postcode, and there are thousands of unique Postcode values. SpatialFilter seems to be a bit of a bottleneck in the process at the moment so I'm looking at using parallel processing in that, but I'll do it based on something like Postcode Area, which should only consist of about 5 or 6 unique values.


tim_wood
Contributor
Forum|alt.badge.img+8
  • Author
  • Contributor
  • December 19, 2018

OK, I've ditched AreaOnAreaOverlayer and gone with SpatialFilter and Clipper. SpatialFilter to exclude areas that are definitely out from unnecessary processing, and Clipper to split the cross-border polygons into separate features to the in and out address counts can be calculated.

I've also got two lots of deaggregate, do something then re-aggregate along the way plus a Dissolver in there too. What's the record for the number of deaggregations and re-aggregations in the same Workspace?!


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings