[GIS] Most efficient way to batch clip in FME

clipfmeshapefile

I have one large shapefile and 100 smaller shapefiles that are smaller areas within the large shapefile.

Using the Clipper transformer, I want to clip the large shapefile using each of the smaller shapefiles (I want to do the clip 100 times), and then write out 100 resulting shapefiles.

What is the most efficient way to do this in FME?

Best Answer

I think the most memory-efficient way to do this is going to be calling one workspace from another, e.g. by using a WorkspaceRunner transformer in a controller workspace which calls the clipper workspace repeatedly with different parameters.

The clipper workspace will likely need to implement dynamic schema unless all the shapefiles share identical schemas.

Other methods, such as a fan-out may take less time but consume more memory, because you are reading and writing multiple files in the same session.

Additionally there is a time cost to starting up another FME instance each time you call the WorkspaceRunner, although in my experience this is very short as long as you are not doing something that requires checking out an ArcGIS license.

The only way to know for sure is to try it yourself and compare.