# !pip install geemap[lidar] import os import geemap import whitebox wbt = whitebox.WhiteboxTools() wbt.set_working_dir(os.getcwd()) wbt.set_verbose_mode(False) url = 'https://github.com/giswqs/data/raw/main/lidar/madison.laz' if not os.path.exists('madison.laz'): geemap.download_file(url) laz = geemap.read_lidar('madison.laz') laz str(laz.header.version) las = geemap.convert_lidar(laz, file_version='1.4') str(las.header.version) geemap.write_lidar(las, 'madison.las') wbt.lidar_histogram('madison.las', 'histogram.html') geemap.view_lidar('madison.las') wbt.lidar_elevation_slice("madison.las", "madison_rm.las", minz=0, maxz=450) geemap.view_lidar('madison_rm.las', cmap='terrain') wbt.lidar_digital_surface_model( 'madison_rm.las', 'dsm.tif', resolution=1.0, minz=0, maxz=450 ) geemap.add_crs("dsm.tif", epsg=2255) m = geemap.Map() m.add_raster('dsm.tif', palette='terrain', layer_name='DSM') m wbt.remove_off_terrain_objects('dsm.tif', 'dem.tif', filter=25, slope=15.0) m.add_raster('dem.tif', palette='terrain', layer_name='DEM') m chm = wbt.subtract('dsm.tif', 'dem.tif', 'chm.tif') m.add_raster('chm.tif', palette='gist_earth', layer_name='CHM') m