Hi FMEers.
I'm after some some tips on how to optimise an existing workspace. The workspace is clipping a point cloud (POD format) in plan view using multiple clippers. Version 1 of the workspace worked fine, whereby multiple Clippers (over 1,000) looks at 20 or so POD files coerced into points. However, it is incredibly slow, as each of the PODs contain several million points.
I was thinking that point cloud pass much faster through the workspace before they are coerced, so a more efficient workspace would only coerce point cloud files that are required, and more importantly only Clip against point cloud files that over the area of interest, i.e. 'Clipper feature 1' only looks at point files files that are either within a point cloud extent or intersect it. Due to the size of the point clouds v the clipper boundary, clipper features will very rarely clip more than two clouds, and this scenario is only where one point cloud meets another (I am looking at a linear point cloud - a tunnel).
I've therefore re-tooled the workspace as below:
- Used BoundingBoxReplacer fetches the approximate coverage of the POD as a box
- Inserted a SpatialRelator to compare the Clipper extents (Requestor) and bounding boxes (Supplier), set to Intersects and Within
- ListExploder
When this data is inspected:
(parallel rectangular boxes are the clippers, where the clippers don't have any point cloud coverage, they are rejected via the ListExploder).
Â
The table view shows that the clippers have adopted the point cloud basename. Where a clipper covers two point clouds, that clipper has been duplicated as a feature:
This is where I'm got stuck. How can I only coerce the point clouds I require? Secondly, how do I only clip the point clouds against the relevant clippers? I am thinking a test of some kind or a FeatureMerger, but need to keep the geometry (Clipper and Clippees) separate, and the latter 3D.
Thanks!