The output file (extension = ".asc"
) with the raster surface interpolated from the ground points has NODATA cells in unexpected cells. In particular, the NODATA cells have no ground points, but have at least one non-ground point. So these cells should still have surface values interpolated for them (from nearby ground points).
Determined the cause of this problem. When the main() function interpolates a ground surface, it passes the point vector with the intent that all the points in the cloud will be iterated through. However, the PointVector implementation is designed to iterate through just the unclassified points in the cloud; this is the iteration needed by the Algorithm::classifyPoints method. When that method finishes, all the points have been classified ground or non-ground, but there is no call to remove those classified as ground. Therefore, when the main() function passes the PointVector instance into SurfaceInterpolation, only the ground points are iterated through.
To fix this, ISurfaceInterpolation must be able to iterate through a IPointVector that represents either all the points in the cloud or just the unclassified points.
Fixed in revision r141.
Related
Commit: [r141]