Skip to main content

I have 676 DTMs, each a 1000 x 1000 grid. I am trying to convert them to a point cloud.

I am using a PointCloudCombiner transformer between reader and writer. This worked perfectly for my sample tests. 1,000,000 points produced for a single file.

The transformation fails when I scale it up to read all the files due to the limitations described here: https://community.safe.com/s/article/error-reading-large-number-of-raster-files#:~:text=The%20C%20runtime%20library%20used,file%20for%20reading%20or%20writing.

I've used the work-around technique described and also used an additional RasterBandNodataSetter before the 2nd RasterMosaiker which I think creates a rectangular DTM within xmin, ymin to xmax, ymax despite there not being full coverage of this area in the 676 input DTMs.

In the Raster Parameters in the PointCloudCombiner, Extract Nodata is set to No.

When I test the workspace on 5 tiles it produces a point cloud with 5,000,000 points as I would expect.

When I scale it up to process all 676 tiles rather than the point cloud containing 676,000,000 points as I would expect. The point cloud contains 704,000,000 rows.

The second RasterMosaiker reports:

"Mosaicker: The resulting raster size of 32000 row(s) and 37000 column(s) is very large. Subsequent operations may take a long time"

So I don't think the Nodata values are being incorrectly extracted otherwise I would expect 1,184,000,000 points.

I hope that makes sense. I've been trying to understand the discrepancy for a day or so and have drawn a blank. Any advice/help/experience would be greatly appreciated.

Thank you 😃

 

Solved by moving the RasterBandNodataSetter to before the first RasterMosaiker.

Explanation: If you have 2 DTMs with the same _min_y (used in the Group By of the first RasterMosaiker transformer) but that are not adjacent, the RasterMosaiker creates the intermediary tiles with 1,000,000 cells per tile, all with a value of 0.


Reply