Skip to main content

I'm working on a test setup that compares two polygon data sets with each other. The end result should be a match on geometry within a 10% tolerance (bigger and smaller) and the centerpoint (inside point) should not be more than 2 meters away.

The one on one match with matcher is quite easy and also the test for the 10% tolerance and 2m centerpoint works but i'm getting stuck on the next step. I have one data set that is leading (red is more detailed) and i would like to know if there is a match with the blue set when you combine two or more polygons of the red data set and do the same test (10% and 2m).

Is there a way to loop the results at the end so i can use the output from the unreferenced featurmerger and and match them with mutiple polygons from the attributecreater '3 = no 1on1 match' and do the same tests as before.

If there is a case that there are two or more matches, how can i use the best match in size?

In the end i want to use it on two maps that both have a complete topology.

Some info about the files

Test DWG with some single test case, in the end i want to use it on the two maps that both have a complete topology of an area.

Info added in the comments in this file

A extra case that should give no result (11% bigger) but if it was smaller than 10% the three red tiles would get matched with the ID of upper blue box and the lower three red boxes would get the ID of the lower blue box.

Hi @jdh009, how about merging the red polygons by the Dissolver at first? You can finally identify how many original polygons have been merged if you specified the Dissolve Count Attribute parameter in the Dissolver.


Hi @jdh009, how about merging the red polygons by the Dissolver at first? You can finally identify how many original polygons have been merged if you specified the Dissolve Count Attribute parameter in the Dissolver.

That is, if the count attribute is 1, it indicates "1 on 1" test result. Otherwise, indicates "M on 1".

 

 


That is, if the count attribute is 1, it indicates "1 on 1" test result. Otherwise, indicates "M on 1".

 

 

Thanks but there could be a situation that the red blocks are connected like the image below or when they are just a bit displaced. Edit: I added the image in the OP.

 

 


That is, if the count attribute is 1, it indicates "1 on 1" test result. Otherwise, indicates "M on 1".

 

 

Do you need to compare the six red polygons with the two blue polygons in the image, for example?

 

Do red polygons belonging to the same group always touch each other?

 

 


Hi @jdh009, maybe you can use a Counter then a SpatialRealtor with merge attributes and dissolve with group by counter value given with the spatial relator (on the _relationship attributes list) ?


Do you need to compare the six red polygons with the two blue polygons in the image, for example?

 

Do red polygons belonging to the same group always touch each other?

 

 

Correction: The red polygons that match a blue polygon always touch each other somewhere. But they can be partly outside and inside of the blue polygons. As long as the total of the combined red features best match the total area of a blue feature and the inside centerpoint is within 2meters of each other.

 

 

The test dwg should match the 1:0.95 test objects but should reject the 1:11 objects. I dont mind if there are 2 or 6 red objects in a blue polygon as long as the total area of the combined red area is within 10% and 2m of the blue one.

 

 

 


Do you need to compare the six red polygons with the two blue polygons in the image, for example?

 

Do red polygons belonging to the same group always touch each other?

 

 

 

Updated the above text. Read it wrongly, sorry.

 


Hi @jdh009, how about merging the red polygons by the Dissolver at first? You can finally identify how many original polygons have been merged if you specified the Dissolve Count Attribute parameter in the Dissolver.

OK. If I understand the requirement correctly, this workspace might help you.

 

compare-polygons-example-2.fmwt

 

 


Reply