关于ENVI/IDL 我写了一段idl的程序,计算msavi,可是运行时总是出错,哪位大侠能帮帮忙看看啊? 10

promsavi;FORWARD_FUNCTIONENVI_GET_DATAenvi,/restore_base_save_fileenvi_batch_init;fil... pro msavi;FORWARD_FUNCTION ENVI_GET_DATAenvi,/restore_base_save_fileenvi_batch_init;file=dialog_pickfile()envi_open_file,file,r_fid=fidif fid eq -1 then begin void =dialog_message('file error!!',/error) envi_batch_exit returnend
envi_file_query,fid,dims=dims;数据类型 波段(one based, [IR, Red])------计算NDVI的波段;TM Bands= [4,3];MSS Bands = [7, 5];AVHRR Bands = [2, 1];SPOT XS Bands = [3, 2];AVIRIS Bands = [51, 29] pos = [4,3] - 1 out_name = 'testimg' b1=envi_get_data(fid=fid,dims=dims,pos=3)b2=envi_get_data(fid=fid,dims=dims,pos=4)exp=(2*b2+1-sqrt((2*b2+1)^2-8*(2*b2-b1)))/2envi_doit, 'math_doit', $ fid=fid, pos=pos, dims=dims, $ /check, o_min=0, o_max=255, $ out_name=out_name, r_fid=r_fid data=envi_get_data(fid = r_fid,dims=dims,pos=0) tvscl,data,/order;envi_batch_exitend

错误是这样的:
展开
 我来答
vcos1986
2013-07-24 · TA获得超过644个赞
知道小有建树答主
回答量:238
采纳率:100%
帮助的人:228万
展开全部
你要先确定r_fid是否为-1 如果是-1就说明你波段运算出错了
那么你下一步肯定就报错了

关于波段运算 你可以参考下envi帮助的例子

fid还是用 t_fid=[fid,fid]
然后envi_doit的时候再fid=t_fid
相隔微秒
2013-07-21 · TA获得超过1601个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:143万
展开全部
倒数第四行,data=envi_get_data(fid = r_fid,dims=dims,pos=0)
R_FID改成FID
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式