1. Python 根据经纬度批量裁剪tiff影像
根据研究区的经纬度批量裁剪TIFF影像,需要用到arcpy中的Clip_management函数。
Clip_management (in_raster, rectangle, out_raster, {in_template_dataset}, {nodata_value}, {clipping_geometry}, {maintain_clipping_extent})
关于参数的几个特别说明
- rectangle 边界框范围的四个坐标:X 最小值、Y 最小值、X 最大值和 Y 最大值,空格分隔。
- maintain_clipping_extent 参数
但在实际使用过程中,如果影像没有包含所要裁剪的范围,选用NO_MAINTAIN_EXTENT时,会将整幅影像输出;选用MAINTAIN_EXTENT时,会输出空白的影像,这些都需要手动删除。(后续再完善判断语句)
官方说明文档
参数详细介绍可参考官方说明文档
ArcMap裁剪说明文档
应用实例
import arcpy
import os
inputPath = r'D:\TIFF'
outputPath = r'D:\Clip'
dirs = os.listdir(inputPath) #列出文件夹内的所有文件
for fileName in dirs:
name, ext = os.path.splitext(fileName) # 分割文件名和后缀
if ext == '.tif':
filePath = inputPath + '\\' + fileName
outputFile = outputPath + '\\' + name + '_clip.tif'
arcpy.Clip_management(in_raster=filePath,rectangle="114.1 38.8 114.2 38.9", out_raster=outputFile, maintain_clipping_extent="MAINTAIN_EXTENT")
print(u'Finished!')
2. ENVI波段合成(Layer Stacking)
将上述裁剪后的TIFF影像,选择需要的波段进行波段合成,用到ENVI中的Layer Stacking工具。下例按照时间序列将裁剪后的高分一号近红外波段进行波段叠加。
- 在Toolbox搜索打开Layer Stacking工具;
- 在①处设置输出坐标系,可根据输入的tiff图层进行选择;
- 导入图像Import File,选择要叠加的Band4;
- 通过Recorder Files拖拽波段可进行波段排序(下图按时间顺序);
- 选择输出位置,文件命名指定后缀为**.tif**。
- 最后,与原始数据像元值对比,核实一下是否操作成功。
3. 可能存在的问题
生成的结果用ENVI打开时,需要选择File > Open As > Optical Sensors > ADS40
的方式打开(具体原因还不清楚);用ArcGIS和QGIS可直接正常打开。