1:: 2:: an example batch script for pre-processing mobile LiDAR trajetories 3:: into an adaptive tiling pre-classified based on trajectory data and 4:: using a pre-thinning step for the ground classification 5:: 6 7echo off 8 9set PATH=%PATH%;C:\LAStools\bin; 10 11:: here we specify the input folder 12 13set WORK_DIRECTORY=inspectation 14 15:: here we set the base name of the produced tiles 16 17set TILE_BASE_NAME=oosteinde 18 19:: number of cores to run on 20 21set NUM_CORES=4 22 23:: convert trajectory file from GPS-week time to Adjusted Standard GPS time 24 25las2las -i %WORK_DIRECTORY%\Trajectory.txt ^ 26 -iparse txyz -week_to_adjusted 1957 ^ 27 -o %WORK_DIRECTORY%\trajectory.laz 28 29:: manually set missing file source IDs in original files (last digit specifies scanner channel) 30 31lasinfo -i "%WORK_DIRECTORY%\strips_raw\Boom - Scanner 1 - 170713_073558_Scanner_1 - originalpoints.laz" ^ 32 -nc ^ 33 -set_file_source_ID 11 34 35lasinfo -i "%WORK_DIRECTORY%\strips_raw\Boom - Scanner 2 - 170713_073558_Scanner_2 - originalpoints.laz" ^ 36 -nc ^ 37 -set_file_source_ID 12 38 39lasinfo -i "%WORK_DIRECTORY%\strips_raw\Boom - Scanner 1 - 170713_073738_Scanner_1 - originalpoints.laz" ^ 40 -nc ^ 41 -set_file_source_ID 21 42 43lasinfo -i "%WORK_DIRECTORY%\strips_raw\Boom - Scanner 2 - 170713_073738_Scanner_2 - originalpoints.laz" ^ 44 -nc ^ 45 -set_file_source_ID 22 46 47lasinfo -i "%WORK_DIRECTORY%\strips_raw\Boom - Scanner 1 - 170713_073943_Scanner_1 - originalpoints.laz" ^ 48 -nc ^ 49 -set_file_source_ID 31 50 51lasinfo -i "%WORK_DIRECTORY%\strips_raw\Boom - Scanner 2 - 170713_073943_Scanner_2 - originalpoints.laz" ^ 52 -nc ^ 53 -set_file_source_ID 32 54 55:: rescale, reoffset, fix projection 56 57rmdir %WORK_DIRECTORY%\strips_fixed /s /q 58mkdir %WORK_DIRECTORY%\strips_fixed 59las2las -i %WORK_DIRECTORY%\strips_raw\*.laz ^ 60 -rescale 0.01 0.01 0.01 ^ 61 -auto_reoffset ^ 62 -epsg 28992 -set_ogc_wkt ^ 63 -odir %WORK_DIRECTORY%\strips_fixed -olaz ^ 64 -cores %NUM_CORES% 65 66:: create adaptive tiling (create initial 128 by 128 meter tiles) 67 68rmdir %WORK_DIRECTORY%\tiles_buffered /s /q 69mkdir %WORK_DIRECTORY%\tiles_buffered 70lastile -i %WORK_DIRECTORY%\strips_fixed\*.laz ^ 71 -apply_file_source_ID ^ 72 -tile_size 128 ^ 73 -buffer 1 -flag_as_withheld ^ 74 -refine_tiling 15000000 ^ 75 -odir %WORK_DIRECTORY%\tiles_buffered -o %TILE_BASE_NAME%.laz 76 77:: refine adaptive tiling (refine too large 128 by 128 meter into 64 by 64 tiles) 78 79lastile -i %WORK_DIRECTORY%\tiles_buffered\%TILE_BASE_NAME%*_128.laz ^ 80 -refine_tiles 15000000 ^ 81 -flag_as_withheld ^ 82 -olaz ^ 83 -cores %NUM_CORES% 84 85:: refine adaptive tiling (refine too large 64 by 64 meter into 32 by 32 tiles) 86 87lastile -i %WORK_DIRECTORY%\tiles_buffered\%TILE_BASE_NAME%*_64.laz ^ 88 -refine_tiles 15000000 ^ 89 -flag_as_withheld ^ 90 -olaz ^ 91 -cores %NUM_CORES% 92 93:: refine adaptive tiling (refine too large 32 by 32 meter into 16 by 16 tiles) 94 95lastile -i %WORK_DIRECTORY%\tiles_buffered\%TILE_BASE_NAME%*_32.laz ^ 96 -refine_tiles 15000000 ^ 97 -flag_as_withheld ^ 98 -olaz ^ 99 -cores %NUM_CORES% 100 101:: refine adaptive tiling (refine too large 16 by 16 meter into 8 by 8 tiles) 102 103lastile -i %WORK_DIRECTORY%\tiles_buffered\%TILE_BASE_NAME%*_16.laz ^ 104 -refine_tiles 15000000 ^ 105 -flag_as_withheld ^ 106 -olaz ^ 107 -cores %NUM_CORES% 108 109:: pre-classification based on height above trajectory 110 111rmdir %WORK_DIRECTORY%\tiles_trajectory_coded /s /q 112mkdir %WORK_DIRECTORY%\tiles_trajectory_coded 113lastrack -i %WORK_DIRECTORY%\tiles_buffered\%TILE_BASE_NAME%*.laz ^ 114 -track %WORK_DIRECTORY%\trajectory.laz ^ 115 -offset -2 ^ 116 -classify_below -0.3 7 ^ 117 -classify_between -0.3 0.3 8 ^ 118 -classify_between 0.3 1.3 3 ^ 119 -classify_between 1.3 2 9 ^ 120 -classify_between 2 50 5 ^ 121 -classify_above 50 7 ^ 122 -odir %WORK_DIRECTORY%\tiles_trajectory_coded -olaz ^ 123 -cores %NUM_CORES% 124 125:: mark most central point from class 8 per 2 by 2 cm cell as class 20 126 127rmdir %WORK_DIRECTORY%\tiles_thinned_preground /s /q 128mkdir %WORK_DIRECTORY%\tiles_thinned_preground 129lasthin -i %WORK_DIRECTORY%\tiles_trajectory_coded\%TILE_BASE_NAME%*.laz ^ 130 -ignore_class 3 5 7 9 ^ 131 -classify_as 20 -step 0.02 -central ^ 132 -odir %WORK_DIRECTORY%\tiles_thinned_preground -olaz ^ 133 -cores %NUM_CORES% 134 135:: remove isolated noise points from class 20 and store result in a tiny LAY file 136 137lasnoise -i %WORK_DIRECTORY%\tiles_thinned_preground\%TILE_BASE_NAME%*.laz ^ 138 -ignore_class 3 5 7 9 ^ 139 -step_xy 0.5 -step_z 0.1 -isolated 10 ^ 140 -olay ^ 141 -cores %NUM_CORES% 142 143:: classify only points of class 20 into (2) ground and (1) non-ground (also use LAY files from last step) 144 145rmdir %WORK_DIRECTORY%\tiles_ground /s /q 146mkdir %WORK_DIRECTORY%\tiles_ground 147lasground -i %WORK_DIRECTORY%\tiles_thinned_preground\%TILE_BASE_NAME%*.laz -ilay ^ 148 -ignore_class 3 5 7 8 9 ^ 149 -step 1 -bulge 0.1 -spike 0.2 -offset 0.02 -fine -all_returns -compute_height ^ 150 -odir %WORK_DIRECTORY%\tiles_ground -olaz ^ 151 -cores %NUM_CORES% 152 153:: create output DTM 154 155rmdir %WORK_DIRECTORY%\tiles_dtm /s /q 156mkdir %WORK_DIRECTORY%\tiles_dtm 157las2dem -i %WORK_DIRECTORY%\tiles_ground\%TILE_BASE_NAME%*.laz ^ 158 -keep_class 2 ^ 159 -step 0.05 -use_tile_bb ^ 160 -odir %WORK_DIRECTORY%\tiles_dtm -obil ^ 161 -cores %NUM_CORES% 162 163:: remove buffer points prior to publishing point cloud on server 164 165rmdir %WORK_DIRECTORY%\tiles_final /s /q 166mkdir %WORK_DIRECTORY%\tiles_final 167lastile -i %WORK_DIRECTORY%\tiles_ground\%TILE_BASE_NAME%*.laz ^ 168 -set_user_data 0 ^ 169 -remove_buffer ^ 170 -odir %WORK_DIRECTORY%\tiles_final -olaz ^ 171 -cores %NUM_CORES% 172 173::optimize for compression and indexing 174 175rmdir %WORK_DIRECTORY%\tiles_optimized /s /q 176mkdir %WORK_DIRECTORY%\tiles_optimized 177lasoptimize -i %WORK_DIRECTORY%\tiles_final\%TILE_BASE_NAME%*.laz ^ 178 -odir %WORK_DIRECTORY%\tiles_optimized -olaz ^ 179 -cores %NUM_CORES% 180 181::publish with Potree in 3D on the Web 182 183rmdir %WORK_DIRECTORY%\portal /s /q 184mkdir %WORK_DIRECTORY%\portal 185laspublish -i %WORK_DIRECTORY%\tiles_optimized\%TILE_BASE_NAME%*.laz ^ 186 -only_3D -elevation -overwrite ^ 187 -title "My Cool Portal" ^ 188 -description "This is so cool!" ^ 189 -odir %WORK_DIRECTORY%\portal -o portal.html -olaz 190 191::stop here 192 193GOTO:EOF 194 195::other unused stuff 196 197lasview -i "f:\Rail_noise_2\Noise_at_new_rec - Scanner 1 - 170512_131454.laz" ^ 198 -drop_intensity_above 0 -keep_first_of_many -filtered_transform -set_classification 7 199 200laslayers -i "f:\Rail_noise_2\Noise_at_new_rec - Scanner 1 - 170512_131454.laz" ^ 201 -drop_intensity_above 0 -keep_first_of_many -filtered_transform -set_classification 7 -olay 202