前面介绍了global根据多边形进行裁剪的过程,操作略微复杂,但能实现对应的效果。如果是需要批量化裁剪,则很纠结。
这里介绍一个开源库gdal进行批量化裁剪的方法。
主要应用场景:
倾斜摄影处理后形成的大tif(尤其以pix4d为主生成的影像数据),10Gb以上是常态。倾斜摄影处理后的瓦片类型的tif(以smart3d为主,范围大的可有上千的tif分块)。如果需要按要求进行行政区划裁剪,形成单独的正摄影像。
比如一个镇的航拍数据,需要输出各个村的正摄影像
好处:
1.裁剪的同时可以进行合并
2.严格按照多边形进行裁剪
3.效率高,无需打开数据即可完成裁剪
4.可实现自动化
5.影像和地形均可裁剪
6.合并裁剪的同时可进行重采样【调整分辨率、比例尺】(本文不做介绍)
7.合并裁剪的同时可进行投影转换(本文不做介绍)
示例:默认保持原有投影和分辨率。
先上命令:
gdalwarp --config GDAL_CACHEMAX 1024 --config GDAL_FILENAME_IS_UTF8 NO --config SHAPE_ENCODING UTF-8 --config GDAL_DATA gdal_data_folder -crop_to_cutline -cutline xiangzhen.shp -cwhere NAME='茅塔乡' -multi -wo NUM_THREADS=ALL_CPUS -wm 512 -r cubic -overwrite left.tif right.tif 茅塔乡2.tif
再看截图:
需要关注的地方只有3个
第一个地方用于裁剪的面:shp文件,如果内含多个面对象,可指定字段筛选
第二个输入的数据源,如果有多个tif,直接空格隔开就好
第三个输出文件的地址名称。
只做合并(只是要对碎文件进行合并,没有目标范围)
直接去掉-crop_to_cutline -cutline参数即可
gdalwarp --config GDAL_CACHEMAX 1024 --config GDAL_FILENAME_IS_UTF8 NO --config SHAPE_ENCODING UTF-8 --config GDAL_DATA gdal_data_folder -multi -wo NUM_THREADS=ALL_CPUS -wm 512 -r cubic -overwrite left.tif right.tif 茅塔乡2.tif
忘了放上效率对比:
不做具体对比了,凭借印象,如果以可视化的工具进行合并或者裁剪,ArcGis、SuperMap、Globalmapper等需要的时间是这个的时间的5倍以上。这还不包括手工打开文件的过程。
注意事项:
在windows XP或更高版本,命令行的最大长度为8191 个字符
在windows2000或windows NT4.0,命令行的最大长度为2047个字符。
如果路径藏的很深,建议进行简化。可以把数据放到根目录。或者对文件进行重命名。
文件批量重命名:
@echo off set a=0 setlocal EnableDelayedExpansion for %%n in (*.png) do ( set /A a+=1 ren "%%n" "bilibili_!a!.png" )
自动化:
bat批处理吧,这里不做介绍。
看到这里的朋友欢迎点赞支持