Fixes "zero-size array to reduction operation" crash on corrupt/incomplete
LAZ files. Added checks at each step:
- validate_laz(): check point_count > 0 via laspy header, parse PDAL
info JSON for point count when using PDAL fallback
- detect_ground_method(): return 'smrf' default if point cloud is empty
after PDAL conversion instead of crashing on np.max(empty_array)
- _read_with_pdal(): log warning and return None if converted file has
0 points
- create_dtm_fast(): fail gracefully if ground file has 0 points
- classify_ground(): check output file size after PDAL pipeline to
catch empty ground classifications early
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>