2

could you help to validate and adjust my FME workbench, please?

Input info: Polygon layer A with counties. Polygon Layer B with areas of the random shape that may intersect or fall inside of the counties in layer A. Objects in this layer belong to different owners.

Task: I need to perform spatial intersection of 2 layers and create a report: List all counties which include all owners whose polygons from layer B intersect particular county.

I think I have built a correct workbench using Spatial Relator transformer and list attributes. But I realized that I need to "reduce accuracy". In case object from Layer B intersect object in Layer A insignificantly, let's say less than 1 meter, I don't need to count its owner into this county.

I tried to act through AreaOnArea overlay transformer, but then I am getting area split into too many polygons and I can't handle this workbench till the end result. Is there any other way to modify current workbench?

enter image description here

4
  • Are there really properties which partially fall within a county? Perhaps you could change the predicate on your SpatialRelator to something like "Requestor is OGC-Within Supplier" instead. That way you won't get the properties on the edge of the boundary.
    – Fezter
    Commented Feb 16, 2023 at 22:50
  • fyi there is a good diagram of the spatial relations here docs.safe.com/fme/html/FME_Desktop_Documentation/…
    – Mapperz
    Commented Feb 16, 2023 at 22:54
  • I find the SpatialFilter a fast way to do this docs.safe.com/fme/html/FME_Desktop_Documentation/…
    – Mapperz
    Commented Feb 16, 2023 at 22:59
  • Thank you for your answer! In my FME version I don't have option with OCG in SpatialRelator or SpatialFilter. Just "Requestor is Within Supplier". But I don't get any intersections using it, as features are not inside of the counties, they are intersecting them. Commented Feb 17, 2023 at 15:40

1 Answer 1

1

I think there are multiple ways of dealing with this.

The simplest method would be to create a buffer of -1m around the Layer B features. Then any overlap up to 1m would no longer exist.

enter image description here

Another method might be to use the AreaGapAndOverlapCleaner transformer. That would let you clean up overlaps to a certain tolerance by assigning it to one polygon or another, and reworking the other boundary around it:

enter image description here

These first two ideas rely on tweaking the data to stop the overlap happening. I think temporarily tweaking data to calculate a result is a legitimate method, and you can return the geometry to its previous state easily enough. But if you're not comfortable doing that, then another solution is to use area calculations to solve the problem.

i.e. you overlay the features (maybe a Clipper transformer, maybe an AreaOnAreaOverlayer) to find the overlaps and then calculate the area of those overlaps. If it is just a small amount, then you ignore that match. Either overlay all of the polygons to find all overlaps, or just ones that the SpatialRelator tell you are overlaps.

1
  • On reflection, the AreaGapAndOverlapCleaner might not be the best way to go. It's more suited for a continuous surface of a single layer, not multiple layers. But I'll leave it here because it could be useful with your data in certain cases. Commented Feb 17, 2023 at 18:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.