LiDAR data analysis and visualization with whitebox and geemap
Create a new conda env to install required packages:
conda create -n geo python
conda activate geo
conda install -c conda-forge mamba
mamba install -c conda-forge pygis
pip install laspy[lazrs]
Uncomment the following line to install packages in Google Colab.
# !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