1. 为什么要进行批处理

Case 1: 假如你只需要处理2期数据,甚至甚至20期数据以下,可以使用CloudCompare.exe进行手动处理。因为时间成本完全支付得起!!!

Case 2: 假如你有成千上万期数据要处理,emmm…手动处理的时间成本完全支付不起…哎呀…只能利用命令行程序进行批处理!!!

注:CloudCompare的命令行代码网址:https://www.cloudcompare.org/doc/wiki/index.php/Command_line_mode

2. 文件准备

2.1. 点云数据

Cloud1和Cloud2,根据自己的实际数据准备!

2.2. 多个m3c2参数文件

(1) 打开CloudCompare.exe软件,加载两幅点云,设置正确的m3c2计算参数,并直接导出为m3c2_parameters.txt文件,如下图所示,框选按钮为导出按钮。
在这里插入图片描述
(2) 根据导出的m3c2_parameters.txt文件的格式,可以利用Matlab或者python修改其他需要的参数。

3. 命令行代码运行

@echo off
setlocal enabledelayedexpansion

REM Define the paths
REM cloudcompare安装位置,最好用2.14版本进行批处理,虽然观望那个说only 2.10,但是本人用2.10测试有问题
set "CC_PATH=C:\Program Files\CloudCompare\CloudCompare.exe"

REM 设置多个m3c2参数的路径,根据自己的路径修改
set "PARAM_DIR=E:\ALS\3-M3C2_parameters\1"

REM 设置m3c2结果输出路径,根据自己的路径修改
set "OUTPUT_DIR=E:\ALS\4-M3C2_dis\1"

REM 设置cloud1和cloud2路径,根据自己的路径修改,最好将两期点云放在OUTPUT_DIR下
set "CLOUD1=E:\ALS\4-M3C2_dis\1\cloud1.las"
set "CLOUD2=E:\ALS\4-M3C2_dis\1\cloud2.las"

REM Ensure output directory exists
if not exist "%OUTPUT_DIR%" mkdir "%OUTPUT_DIR%"

REM Loop through all parameter files
for %%f in ("%PARAM_DIR%\*.txt") do (
    set "FILE_NAME=%%~nf"
    set "FILE_NUMBER=!FILE_NAME:~0!"

    REM Build the output file name
    set "OUTPUT_FILE=!OUTPUT_DIR!\dis_!FILE_NUMBER!.txt"

    REM Execute CloudCompare M3C2 command
    REM 在处理过程中,无限调试该行,因为想将m3c2的结果输出为txt文件,之后再进行操作。但是一直失败,后来终于发现是因为输出的时候每个云会输出原始的文件,文件数量一直对不上,所以利用temp1和temp2临时存放,多个m3c2的结果命名规则是dis_i.txt,可根据自己的实际需求进行修改。
	"!CC_PATH!" -SILENT -O "!CLOUD1!" -O "!CLOUD2!" -M3C2 "%%f" -C_EXPORT_FMT ASC -PREC 14 -SEP COMMA -ADD_HEADER -EXT txt -SAVE_CLOUDS FILE "temp1 temp2 !OUTPUT_FILE!"

    echo Saving to "!OUTPUT_FILE!"
    echo Processed file !FILE_NUMBER!
)

echo All files processed.
pause

如有任何问题,可关注“实景三维视界”发消息详细咨询!!!

更多推荐