Skip to main content
Question

Chop a point cloud with buffererd overlap

  • 31 January 2013
  • 6 replies
  • 7 views

I need to cut a large-ish point cloud into sheets for processing, with a healthy buffer (so every sheet overlaps by ~100 feet with its neighbors.

 

 

I have the cloud (.laz), and I have the sheets (shapes in a .dgn).  My output is an ASCII xyz style file, one per sheet.  I can use the Bufferer to add the overlap to the shapes, but then how can I render the points into each file?  If there were no buffer, I'd use a PointOnAreaOverlayer to move the sheet name from the area to the point, then fanout my output by that attribute.  But that won't work with overlap, because one point will get a list of sheet names.

 

 

I can't assume the number of sheets or their relative positions will be constant, so I need a procedural method to do this.  Any ideas?
Is the Clipper what you are looking for?

 

 

http://fmepedia.safe.com/articles/Samples_and_Demos/Transformers-to-use-with-Point-Clouds

 


From how I understand Clipper operates, it makes a single clipping mask and tests the cloud against that, so it won't handle the buffered overlap any better than the Overlayer would.

 

 

The point cloud is perhaps a red herring in my situation.  It could just as easily be single point objects (and indeed, I planned on coercing it to just that) or line and area geometry.  It just happens to be point objects in a point cloud at the moment.
If that's the case then I think the PointOnAreaOverlayer is actually the best route. As you say you end up with a list of relationships but FME can help you handle that in a number of ways... my approach in the sample workspace below is pretty basic but it gets the data replicated into each file.

 

 

http://goo.gl/rSBxb

 

 

Here I leverage the _overlaps attribute to tell me how many tiles the point is in. The subsequent Tester (or better still the TestFilter identifies the number of duplicates you need to make (you could also be much smarter with the Cloner). Depending on the overlaps I then grab the Name from the relevant list element. Finally on my Inspector I have Grouped By to show the features as separate layers. You'd need to use the Fanout option on your Writer to get the same result with your target format.

 

 

Best of luck
It maybe easier to download the zipped version:

 

 

http://goo.gl/bLz1M

 


Thanks.  Looking at your solution helped me to understand the tools and approach to take.  Yours would probably work, but I'd have to make assumptions about how many sheets would overlap which I can't be sure of.

 

 

I think that the "clever" way to do it is with a Cloner (clone each item by _overlaps) then a ListIndexer (index by _copynum).

 

 

I have that running now, with high hopes.

 

....because one point will get a list of sheet names....

 

 

In this case the listexploder can be used to create the overlapping features, before the writing.

Reply