Thursday, July 1, 2010

FME SmartCleaner makes things easy

I recently had a customer requirement to:
  1. read Lot lines and lot labels as two separate layers from a single DWG file
  2. where possible, stitch the lot lines together to make a polygon
  3. where possible, figure out which lot label is inside each of the newly generated polygons and aggregate those two geometries into one RWO in Smallworld

It turns out that step#3 can easily be done with PointOnAreaOverlayer and Aggregator.

But step#2 didn't seem that easy. I had tried Intersector, TopologyBuilder and Snapper but I never seemed to be able to get the over/under shoots to snap. Then I remembered to check http://fmepedia.com and discovered that there is a custom transformer that does exactly what I needed. It is called the SmartCleaner and is described here.

You can choose to either link or embed this Custom Transformer. I chose to embed it into my existing workspace. This made it transportable across user machines without having to ensure that each user explicitly installed the custom transformer.

When I looked at the internal workings of the SmartCleaner, I realized why my efforts to use Intersector and Snapper were inadequate. The following screen snapshot shows the complexity of the SmartCleaner.




All I can say is a hearty "thank you" to Dave Campanas at Safe Software for creating this Custom Transformer and making this over/under shoot snapping so easy to implement.


2 comments:

kaash said...

Hi Alfred,
What could be the input for this transformer?
And if we get a polygon from the last output arrow, can we directly insert that into the DB object e.g.,parcels.

Thanks,
Sandeep

Alfred Sawatzky said...

Hello Sandeep,

The input to the SmartCleaner transformer can be line or area type features. The output from this transformer is not area features. The output is simply line features whose over/under shoots have been cleaned up. If you want to generate polygons you still need to run the features through some kind of area generating transformer.

Alfred