IDL学习——调用enviTask对高分2号影像进行预处理

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

注:该程序是在ENVI5.3+IDL8.5中进行,而ENVI5.3不支持国产卫星的打开,可到ENVI官网上下载envi_china_satellites_support该扩展工具进行打开与处理。

本实例实现利用IDL调用ENVITask实现高分2号影像的预处理。

 高分2号的预处理流程是:

 说明:1. 针对不同的应用,有不同的处理流程,上图中列出了两种常用的预处理流程。流程一主要针对高精度的定量遥感应用,也就是对大气校正精度要求比较高应用,比如:植被参数定量反演等;流程二主要针对定性遥感或者对大气校正精度要求比较低的遥感应用,比如:土地利用类型分类等。本文介绍的主要是流程二的详细操作步骤。

 效果图

              

代码:

;函数1:解压tar.gz压缩文件
Function Untar1, inputfile,tarout_folder
  tarout_folder = FILE_DIRNAME(inputfile)+'\'+FILE_BASENAME(inputfile,'.tar.gz')
  ;解压GZ
  FILE_GUNZIP, inputfile
  ;创建解压后gz同名文件夹,否则默认解压到当前文件夹
  IF ~FILE_TEST(tarout_folder) THEN FILE_MKDIR,tarout_folder
  ;解压tar
  FILE_UNTAR, FILE_DIRNAME(inputfile)+'\'+FILE_BASENAME(inputfile,'.tar.gz')+'.tar',tarout_folder
  FILE_DELETE,FILE_DIRNAME(inputfile)+'\'+FILE_BASENAME(inputfile,'.tar.gz')+'.tar';删除中间解压tar文件
  return,tarout_folder;返回解压后文件夹名
END
;函数2:标准预处理流程
FUNCTION Pre,Root_path=Root_path,inputfile=inputfile,input_DEM=DEM,out_path = out_path,e=e
  COMPILE_OPT IDL2
  ;开始处理:压缩文件解压
  ;明确压缩文件名  
  data_path = Untar1(inputfile)
  Raster_mss=ENVI_Open_GF2_Raster(file_search(data_path,'*-MSS1.xml'))
  Raster_pan=ENVI_Open_GF2_Raster(file_search(data_path,'*-PAN1.xml'))
  ;----------多光谱正射校正-----------
  demfile=e.OpenRaster(DEM)
  Task1=ENVITASK('RPCOrthorectification')
  Task1.Input_Raster=Raster_mss
  Task1.Output_Pixel_Size=4
  Task1.Resampling='Cubic Convolution'
  Task1.Output_Raster_URI =e.GetTemporaryFilename()
  Task1.DEM_Raster=demfile
  Task1.Execute, Error=error
  ;  ;--------------多光谱辐射定标---------
  Task2=ENVITASK('RadiometricCalibration')
  Task2.Input_Raster=Task1.Output_Raster
  Task2.Calibration_Type='Radiance'
  Task2.Output_Data_Type='Float'
  Task2.Scale_Factor=0.10
  Task2_Output_Raster_URI =e.GetTemporaryFilename()
  Task2.Execute
  ;----------全色正射校正--------------
  demfile=e.OpenRaster(DEM)
  Task3=ENVITASK('RPCOrthorectification')
  Task3.Input_Raster=raster_pan
  Task3.Output_Pixel_Size=1
  Task3.Resampling='Cubic Convolution'
  Task3.Output_Raster_URI =e.GetTemporaryFilename()
  Task3.DEM_Raster=demfile
  Task3.Execute, Error=error
  ; -------------图像融合--------------
  Task7=ENVITask('GramSchmidtPanSharpening')
  Task7.INPUT_LOW_RESOLUTION_RASTER=Task2.Output_Raster
  Task7.INPUT_HIGH_RESOLUTION_RASTER=Task3.Output_Raster
  Task7.Output_Raster_URI = e.GetTemporaryFilename()
  Task7.IGNORE_VALIDATE=0
  Task7.Execute, Error=error
  ;  ----------快速大气校正-----------
  Task4=ENVITASK('QUAC')
  Task4.Input_Raster=Task7.Output_Raster
  Task4.SENSOR='Generic / Unknown Sensor'
  Task4.Output_Raster_URI = '';放最终结果输出路径
  Task4.Execute
  print,Task4.Output_Raster_URI
end
  ;主程序:包括解压和预处理
PRO pre,Root_path=Root_path,inputfile=inputfile,input_DEM=DEM,out_path = out_path
  COMPILE_OPT IDL2
  ;打开envi
  e=ENVI(/headless)
  start = systime(/second)
  ;envi_batch_status_window,/on ;开启二次开发进度条
  ;相关输入参数:预处理:原始数据+DEM文件+输出文件夹
  Root_path='E:\NJPRO\Dataprocess'
  inputfile = Root_path+'\OriginData\GF2_PMS1_E113.6_N34.8_20180416_L1A0003126793.tar.gz';传入GF1压缩文件
  DEM='C:\Program Files\Exelis\ENVI53\data\GMTED2010.jp2'
  Restore,'C:\Program Files\Exelis\ENVI53\extensions\envi_china_satellites_support.sav' ;需要sav文件完整路径
  out_path='';自定义输出文件位置
  ;执行预处理,返回融合后栅格文件
  Sharpen_file = Pre(Root_path=Root_path,inputfile=inputfile,input_DEM=DEM,out_path=out_path,e=e)
  endtime = systime(/second)
  print,'running time ',endtime-start
end

;

如有做的不好的地方,欢迎指正。

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三十二号星期八

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值