美文网首页开源
用脚本的形式基于gdal对分块的tif进行多边形裁剪

用脚本的形式基于gdal对分块的tif进行多边形裁剪

作者: 三维GIS那点事_王跃军 | 来源:发表于2019-05-16 20:25 被阅读0次

    前面介绍了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批处理吧,这里不做介绍。

    看到这里的朋友欢迎点赞支持

    相关文章

      网友评论

        本文标题:用脚本的形式基于gdal对分块的tif进行多边形裁剪

        本文链接:https://www.haomeiwen.com/subject/pfpwaqtx.html