今天,重新跑了一下,之前写的代码,发现,输入影像只能是单波段的,哈哈哈哈哈哈哈哈,之前忽略了这个问题,但问题不大。

主要的波段合成函数:envi_layer_stacking_doit  (由于版本限制,如果使用的是最新版ENVI 5.5,可以直接使用高级封装函数,但无奈我的版本是envi5.3 , IDL 8.5, 虽然envi改进了波段合成,使用了另外的函数,如下:

ENVI/IDL 混合编程:批量裁剪影像-第二篇

重点:envi_layer_stacking_doit 使用于全波段的修改方法,关键在于 fid以及 pos, dims需要一一对应,且逐波段对应,如下所示:

假设 A影像有一个波段,B影像有databands个波段,则需要明确,波段合成后的波段为databands+1,于是,设置以下fid, pos, dims: 需注意一一对应,逐波段对应

  dimall=INTARR(5,databands+1)
  posall=[INDGEN(databands),0]  
  fidall=INTARR(databands+1)
  FOR k=0,databands-1 do begin
    fidall[k]=data_fid
    dimall[0:4,k]=data_dims
  endfor
  fidall[databands]=mask_fid
  dimall[0:4,databands]=mask_dims

 

上面的新函数的具体的使用方式如下,但为了方便起见,我还是稍微修改了一下原函数envi_layer_stacking_doit,如果对新函数感兴趣,可查帮助,如下:

1. 第一种结合方式

ENVI/IDL 混合编程:批量裁剪影像-第二篇

 

2. 第二种结合方式

ENVI/IDL 混合编程:批量裁剪影像-第二篇

相关文章: