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

今天,重新跑了一下,之前写的代码,发现,输入影像只能是单波段的,哈哈哈哈哈哈哈哈,之前忽略了这个问题,但问题不大。主要的波段合成函数:envi_layer_stacking_doit (由于版本限制,如果使用的是最新版ENVI 5.5,可以直接使用高级封装函数,但无奈我的版本是envi5.3 , IDL 8.5, 虽然envi改进了波段合成,使用了另外的函数,如下:重点:envi_l...
摘要由CSDN通过智能技术生成

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

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

重点: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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用ENVI中的IDL脚本可以批量获取卫星影像的轮廓边界。具体步骤如下: 1. 打开ENVI软件,选择“File”菜单下的“New -> Procedure”打开ENVIIDL环境。 2. 在IDL环境中输入以下命令,导入ENVIIDL库: ``` ENVIRasterToVector, /QUIET ENVI_SELECT, /QUIET ``` 3. 定义一个字符串变量,用于存储待处理影像的文件路径: ``` dir = 'C:\image_folder\' ``` 其中,C:\image_folder\为待处理影像所在文件夹的路径。 4. 定义一个字符串数组,用于存储待处理影像的文件名: ``` files = ['image1.tif', 'image2.tif', 'image3.tif'] ``` 其中,image1.tif、image2.tif、image3.tif为待处理影像的文件名,可根据实际情况进行修改。 5. 使用循环语句,对待处理影像进行遍历,并获取其轮廓边界: ``` FOR i=0, N_ELEMENTS(files)-1 DO BEGIN ; 打开待处理影像 file = dir + files[i] raster = ENVIRaster(file) ; 将影像转为矢量数据 vector = ENVIRasterToVector(raster, /BOUNDARY, /POLYGON, /QUIET) ; 选择矢量数据 ENVIRasterSelect, vector ; 获取矢量数据的边界 ENVI_SELECT, /BOUNDARY ; 保存矢量数据的边界 SAVE_DIR = dir + 'boundary_' + files[i] ENVISaveSelectedFeatures, SAVE_DIR, /POLYGON, /QUIET ; 关闭矢量数据 ENVIClose, vector ENDFOR ``` 6. 执行以上脚本,即可批量获取待处理影像的轮廓边界,并将结果保存在与待处理影像同一文件夹下的文件中,文件名为“boundary_原文件名”。 需要注意的是,以上脚本仅适用于获取影像的轮廓边界,如果需要获取影像的实际范围边界,请参考之前的回答中的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值