在暑期参加ESRI竞赛的时候,我们用的是ETM+的数据,这个数据在03年之后必须要进行去条带的工作才能够使用。但是去条带工具有个bug,就是去完条带之后会导致大气表观反射率的定标参数丢失。这个参数丢失会导致envi里带的云检测工具用不了,自己重新手动输入参数。
这些参数只能够从查看头文件信息的地方查到,或者自己从头文件里找(我是没找到)。这样一来,就只能手动的寻找和记录,很麻烦,大大增加任务量。(我不知道还有没有其他方法)
现利用学了几天的IDL写了一个输出定标参数的小程序,供需要去条带和云检测的同学使用。
首先说一下去条带工具。这个工具我学长的博客里有,没有的话可以从那里下载:https://www.ixxin.cn/2016/12/03/landsat-7qutiaodaiyuchuli/
这是我学长的博客,工具好用之极。
这个工具用的时候有个要点,就是要先从envi中把图像打开,然后再使用,不能够在插件中直接使用。否则会丢失掉所有的定标信息,不只是大气表观反射率了。
下面是获得定标参数的代码:
pro get_gains_and_offsets
COMPILE_OPT IDL2
e=ENVI(/headless)
fn=ENVI_PICKFILE(title='select etm+ file')
basename=FILE_BASENAME(fn)
dg0=DIALOG_MESSAGE('请选择或创建一个文件夹存储定标参数!',/information)
o_fn=DIALOG_PICKFILE(title='Select a folder!',/directory)
o_fn_gains=o_fn+basename+'_gains.txt'
o_fn_offsets=o_fn+basename+'_offsets.txt'
raster=e.openraster(fn)
multi_raster=raster[0]
md=raster[0].metadata
drgains=md['data reflectance gain values']
droffsets=md['data reflectance offset values']
OPENW,lun1,o_fn_gains,/get_lun
OPENW,lun2,o_fn_offsets,/get_lun
for i=0,5 do begin
PRINTF,lun1,drgains[i]
endfor
for i=0,5 do begin
PRINTF,lun2,droffsets[i]
endfor
FREE_LUN,lun1,lun2
dg=DIALOG_MESSAGE('Finished!',/information)
end
没有注释,我懒。我多无私,直接分享代码。自己试了一下,挺好,能输出两个文件,记录了多光谱波段的定标参数。
为了比我更懒的人,我把该小程序做成了sav文件,放到envi的扩展文件夹就能用。下面是链接:https://pan.baidu.com/s/1ttLvyE-vwZxdCipUXqftUQ
希望高手指点一番。
本文介绍使用ETM+数据在ESRI竞赛中的去条带处理,因大气表观反射率定标参数丢失问题,作者分享了用IDL编写的程序,用于自动提取并保存定标参数,避免手动查找,提高云检测效率。

937

被折叠的 条评论
为什么被折叠?



