ENVI/IDL混合编程-批量影像拼接

;README
;used for batch mosaicing with sentinel-2 images (band by band)
;usage: function_mosaic(['/20200131_1/B1','/20200131_2/B1'],'/20200131/B1_mosaic')
;requirement: ENVI/IDL 5.3 or higher
;reference: the reference book of envi/idl software
;coded by Yinxiacao
;date: April 8, 2020

FUNCTION function_mosaic,files,outpath
  COMPILE_OPT IDL2
  ; Start the application
  e = ENVI()
  FOR i=0, N_ELEMENTS(files)-1 DO BEGIN
    IF FILE_TEST(files[i])  EQ 0 THEN RETURN, 0 ;IF THE INPUT FILE NOT EXIST
  ENDFOR
  ; Select input scenes 
  ;files = REVERSE(FILE_SEARCH(inpath, inname))
  scenes = !NULL
  FOR i=0, N_ELEMENTS(files)-1 DO BEGIN
    raster = e.OpenRaster(files[i])
    ;query and update the data ignore value
    metadata = raster.METADATA
    pos = WHERE(STRCMP(metadata.tags, 'data ignore value'

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用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_原文件名”。 需要注意的是,以上脚本仅适用于获取影像的轮廓边界,如果需要获取影像的实际范围边界,请参考之前的回答中的方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值