- 问题描述:通常的批量裁剪方法是使用相同的矢量文件或者roi区域,分别对每景影像裁剪。可采用subset via rois等等方法,但由于多幅影像间(在坐标系相同,分辨率相同的情况下),并非完美配准,因此,裁剪到的影像会存在一行或者一列的差异,使得后续计算无法进行。因此,可采用另一种思路:利用裁剪区域的掩膜图mask(栅格),对多幅影像进行波段合成layer stacking,然后再掩膜掉无效区域。
- 关键函数过程:envi_layer_stacking_doit(波段合成), Math_Doit (波段运算),ENVI_FILE_MNG(释放内存)
- 注意点:波段合成与波段运算的输入文件的fid:应当是多个,即使是处理同一文件的不同波段,不同点在于波段的位置不同(pos不同),具体查看IDL/ENVI文档帮助
- 未解决的问题:内存释放函数ENVI_FILE_MNG可以释放硬盘上的文件,但似乎无法释放位于内存的文件(files in memory),目前不知道如何解决。如有方法,愿分享,感激不尽。
- 代码如下:
pro zy3batchsubset
;20190213 使用矢量批量裁剪影像
;如果采用上面的方法,得到的影像可能相差一行或者一列,最好的方法是采用layer_stacking
;步骤:1.使用mask进行layer_stacking 2.使用mask进行掩膜处理 3.内存释放(ENVI会自动将文件加入内存,影响后续运行效率)