ENVI二次开发应用:批量计算图像植被覆盖度

运行前在控制台启动ENVI。

pro EXAMPLE_MATH_DOIT_Batch
  compile_opt IDL2
  path = envi_pickfile(/directory) ;打开文件所在路径
  files = file_search(path,'*dat',count=count)
  if count eq 0 then return
  outPath = 'D:\'
  for i=0, count-1 do begin
    file = files[i]
    envi_open_file, file, r_fid=fid
    if (fid[0] eq -1) then continue
    envi_file_query, fid, dims=dims
    t_fid = [fid,fid]
    pos = [2,3]
    exp = 'bm_CalVFC(b1,b2)'
    bname=file_basename(file,'.dat') ;提取不带文件扩展名的的文件名
    out_name = outPath + baname + '_ndvi.dat'

    ; Perform the band math processing
    envi_doit, 'math_doit', $
      fid=t_fid, pos=pos, dims=dims, $
      exp=exp, out_name=out_name, $

      r_fid=r_fid
  endfor

end

植被覆盖度函数(植被覆盖度计算方法不尽相同,在此选取一种算法用代码实现):

;vfc=bm_CalVFC(red,nir,[min=double(ndvi_min)],[max=double(navi_max)])
function bm_CalVFC,red,nir,min=min,max=max
  if ~n_elements(min) then min = 0.05
  if ~n_elements(max) then max = 0.7
  ndvi=(float(nir)-red)/(float(nir)+red)
  vfc=(ndvi lt min)*0+(ndvi gt max)*1+(ndvi ge min and ndvi le max)* $
  (ndvi-min)/(max-min)
  return,vfc
  
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值