Hi Ben,
I am not entirely sure that I understand your processing stream so I apologize if my answer is off base...
blast2dem -i *.laz -o big_dtm.tif -keep_class 2 -merged -step 1
Of course you can use bil if you prefer.
Now sometimes, you may not be able to use blast2dem because you have too many points (~billions). In that case, you may need to output the tiles as individual rasters, then merge the rasters. I usually use las2dem much like you tried, but then I merge them using gdalbuildvrt and or gdal_translate:
I have found that this method does have some tricky bits if you want to avoid edge artifacts.
- You want to lastile with a -tile_buffer (I usually use 10% of tile_size).
- when you run las2dem, try to use resolutions in 1 m increments (-step) otherwise you can end up with some missing rows or columns on tile edges (black lines). I think this is related to the tile_size not being divisible by step size, leaving potential for some rounding error. In practice I stick with tilesize 1000 and step 1m when ever possible.
- using las2dem, you should use -extra_pass to filter the points before interpolating them (seeing as you are only using ground and that will remove a lot unnecessary processing).
- use tile_bb to keep overlapping tiles, otherwise you will likely see some artifacts and gaps near the tile edges because if you -use_orig_bb you will only interpolate up to the original edge of the tile without the buffer
Hopefully that will help get you on your way. If not let me know,
Cheers,
Ty