Skip to main content

I am using a spatial filter to test if a candidate polygon is within the base polygon. The settings for the spatial filter are as follows:

Filter Type - Single Filter

Pass Criteria - Pass against one filter

Support Mode - Support aggregates

Spatial Predicates to test - Contains Candidate

Use bounding box - no

Curve boundary rule - default

 

For some reason it keeps failing and I'm not sure why. I've attached a sample of the data.

@chris28​ Thanks for including some example data. For the Contains to work, if the boundaries touch, then the boundaries would have to match exactly. If there are any overlaps of the boundaries, where the boundaries cross, then Contains will fail. Since there are no vertices on the Base where the Candidate appears to touch then it's unlikely the edges match exactly.

You can illustrate this if you compare the Base to itself - it will pass.


@chris28​ Thanks for including some example data. For the Contains to work, if the boundaries touch, then the boundaries would have to match exactly. If there are any overlaps of the boundaries, where the boundaries cross, then Contains will fail. Since there are no vertices on the Base where the Candidate appears to touch then it's unlikely the edges match exactly.

You can illustrate this if you compare the Base to itself - it will pass.

What would the setting need to be then for this to pass? Or is there a different transformer that would work better?


What would the setting need to be then for this to pass? Or is there a different transformer that would work better?

You could set the Spatial Filter to intersects as well as contains. Other transformers to look at are AreaOnAreaOverlayer and Intersector. These both have tolerance attributes that you can set. They will however breakdown geometry so once you've determined the relationships, you'll need to transfer this back to the original geometries.


Reply