可以实现直接输入.DAT文件,读取获得定标完成的影像、时间、太阳位置的三个数组
inputfile为.DAT文件,例如HS_H08_20170623_0250_B01_FLDK_R10_S0110.DAT
resolution为HS_H08_20170623_0250_B01_FLDK_R后的数字,代表了分辨率
代码会自动对数据进行对应的定标(可见光波段定标为表观反射率,红外定标为亮温)
时间提前转为double型,防止后面麻烦
会将500m的波段采样到一千米,然后将数据按分辨率划分,合并

;输入文件夹(存储全部DAT文件)并进行预处理
Function H8_Preprocess,inputfolder=inputfolder,e=eCOMPILE_OPT idl2R10_data=make_array(11000,11000,4,/FLOAT)R20_data=make_array(5500,5500,12,/FLOAT)bandnames=['01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16']for i=0,15 do beginband_files=file_search(inputfolder,'*B'+bandnames[i]+'_FLDK*.DAT',/test_regular)if N_ELEMENTS(band_files) EQ 10 THEN BEGINband_data=[]obstime=[]sunpos=[]for j=0,9 do begininfile=band_files[j]segment=read_hsd(inputfile=infile[0])imgdata=segment['pixels']imgtime=segment['time']sun_pos=segment['sun_pos']band_data=[[band_data],[imgdata]]obstime=[[obstime],[imgtime]]sunpos=[[sunpos],[sun_pos]];销毁哈希表OBJ_DESTROY,segmentendforif i lt 2 then beginR10_data[*,*,i]=band_dataR10_obstime=obstimeR10_sunpos=sunposendif else if i eq 2 then begin       band_raster=ENVIRaster(band_data,URI=e.GetTemporaryFilename(CLEANUP_ON_EXIT='True'))band_raster.SavesampleRaster=ENVIResampleRaster(band_raster, DIMENSIONS=[11000,11000])band_data=sampleRaster.GetData()sampleRaster.Closeband_raster.CloseR10_data[*,*,i]=band_dataendif else if i lt 4 then beginR10_data[*,*,i]=band_dataendif else beginR20_data[*,*,i-4]=band_dataR20_obstime=obstimeR20_sunpos=sunposendelseendifendforoutdata=hash('R10',R10_data,'R10_time',R10_obstime,'R10_sunpos',R10_sunpos,'R20',R20_data,'R20_time',R20_obstime,'R20_sunpos',R20_sunpos)return,outdataEND
;读取HSD数据并定标为albedo/BT
Function read_hsd,inputfile=inputfileCOMPILE_OPT idl2spli=strsplit(file_basename(inputfile),'_');获取分辨率resolution=fix(strmid(file_basename(inputfile),spli[6]+1,2))if resolution eq 5 then begincols=22000rows=2200endif else if resolution eq 10 then begincols=11000rows=1100endif else if resolution eq 20 then begincols=5500rows=550endifopenr,h8_lun,inputfile,/get_lun;获取Observation start timepoint_lun,h8_lun,46imgtime=dblarr(1);R8readu,h8_lun,imgtime;获取Total header lengthpoint_lun,h8_lun,70header_length=uintarr(1);I4readu,h8_lun,header_length;获取影像point_lun,h8_lun,header_lengthimgdata=uintarr(cols,rows)readu,h8_lun,imgdata ;获取Sun's positionpoint_lun,h8_lun,510sun_pos=dblarr(3);R8readu,h8_lun,sun_pos;获取Band numberpoint_lun,h8_lun,601band=uintarr(1);I2readu,h8_lun,band  ;获取Gainpoint_lun,h8_lun,617Gain=dblarr(1);R8readu,h8_lun,Gain;获取Offsetpoint_lun,h8_lun,625Offset=dblarr(1);R8readu,h8_lun,Offset;计算radianceradiance=imgdata*Gain[0]+Offset[0]if band le 6 then begin;计算反射率;获取radiance to albedopoint_lun,h8_lun,633cc=dblarr(1);R8readu,h8_lun,cc;计算反射率albedo=radiance*cc[0]   ;返回值outdataoutdata=albedoendif else begin;计算亮温;获取Central wave lengthpoint_lun,h8_lun,603wv=dblarr(1);R8readu,h8_lun,wv;获取radiance to brightness temperature(c0)point_lun,h8_lun,633c0=dblarr(1);R8readu,h8_lun,c0;获取radiance to brightness temperature(c1)point_lun,h8_lun,641c1=dblarr(1);R8readu,h8_lun,c1;获取radiance to brightness temperature(c2)point_lun,h8_lun,649c2=dblarr(1);R8readu,h8_lun,c2;获取Speed of light (c)point_lun,h8_lun,681c=dblarr(1);R8readu,h8_lun,c    ;获取Planck constant (h)point_lun,h8_lun,689h=dblarr(1);R8readu,h8_lun,h;获取Boltzmann constant(k)point_lun,h8_lun,697k=dblarr(1);R8readu,h8_lun,k;计算亮温wv=wv[0]*1e-6rad=radiance*1e6Te=h[0]*c[0]/k[0]/wv[0]/(ALOG(2*h[0]*c[0]^2/(wv[0]^5*rad)+1))BT=c0[0]+c1[0]*Te+c2[0]*Te^2;返回值 outdataoutdata=BTendelsefree_lun,h8_lun ;返回:albedo/BT,时间,太阳坐标obstime=make_array(cols,rows,value=imgtime[0]*1.0d)sunpos=make_array(cols,rows,3,/float)sunpos[*,*,0]=make_array(cols,rows,value=sun_pos[0])sunpos[*,*,1]=make_array(cols,rows,value=sun_pos[1])sunpos[*,*,2]=make_array(cols,rows,value=sun_pos[2])out=hash('pixels',outdata,'time',obstime,'sun_pos',sunpos)return,outEND

IDL 读取葵花8(Himawari-8)HSD数据相关推荐

  1. xml文件c语言读取函数,IDL读取XML文件

    使用IDL读取RADARSAT-2的数据,需要用到lutSigma.xml文件中的定标常数来计算相关参量.本文需要提取lutSigma.xml中的offset和gains参数.使用IDL来读取xml文 ...

  2. IDL读取TXT文件出现 READF: End of file encountered. Unit: l, File: H: 错误

    IDL读取TXT文件出现 READF: End of file encountered. Unit: l, File: H: 错误 1.出现原因 出现错误图 在读取txt文件时出现这个错误,研究了一天 ...

  3. php读取大文件某行内容,php读取大文件最后几行数据的实现代码

    /* * 读取大文件最后几行数据 * by www.jbxue.com */ $file = $handledir.'/venocap.1'; $fp = fopen($file, "r&q ...

  4. 如何用matlab读取npz文件,Python Numpy中数据的常用的保存与读取方法

    在经常性读取大量的数值文件时(比如深度学习训练数据),可以考虑现将数据存储为Numpy格式,然后直接使用Numpy去读取,速度相比为转化前快很多. 下面就常用的保存数据到二进制文件和保存数据到文本文件 ...

  5. 微信新版支持读取iPhone M7/M8协处理器运动数据 与好友PK一下运动量吧

    iPhone的创新是有目共睹的,Healthkit的推出预示着苹果进军健康领域,iPhone M7/M8协处理器可以收集和分析用户的健康数据,那么好的硬件自然不会被势在打造完整生态圈的微信给错过,这不 ...

  6. 如何用C语言编写wav读取函数,C++读取WAV音频文件的头部数据的实现方法

    C++读取WAV音频文件的头部数据的实现方法 前言: 在这里分享一下自己的心得,希望和大家一起分享技术,如果有什么不足,还请大家指正.写出这篇目的,就是希望大家一起成长,我也相信技术之间没有高低,只有 ...

  7. python读取文件某一行-使用python读取.text文件特定行的数据方法

    如何用python循环读取下面.txt文件中,用红括号标出来的数据呢? 首先,观察数据可知,不同行的第一个数据元素不一样,所以考虑直接用正则表达式. 再加上,对读和写文件的操作,就行了 注:我用的是p ...

  8. python读取文件多行内容-使用python读取.text文件特定行的数据方法

    如何用python循环读取下面.txt文件中,用红括号标出来的数据呢? 首先,观察数据可知,不同行的第一个数据元素不一样,所以考虑直接用正则表达式. 再加上,对读和写文件的操作,就行了 注:我用的是p ...

  9. stm32 iic接口 进入busy_STM32通过IIC接口读取JY61模块MPU6050陀螺仪芯片数据核心程序...

    1 简述 最近,想学角度融合算法在网上买一个JY61的模块.他们家的模块用起来还不错.模块分为串口通讯和IIC通讯的.串口读取数据他们家有例程,我就不说了.想分享给大家这个模块的IIC是怎么去读取MP ...

  10. java通过poi读取excel中的日期类型数据或自定义类型日期

    java通过poi读取excel中的日期类型数据或自定义类型日期 Java 读取Excel表格日期类型数据的时候,读出来的是这样的  12-十月-2019,而Excel中输入的是 2019/10/12 ...

最新文章

  1. 使用 Python 开发一个恐龙跑跑小游戏,玩起来
  2. ASP.NET 4 和 Visual Studio 2010 Web 开发概述
  3. Cross-Validation(交叉验证)详解
  4. HDU 3486 Interviewe RMQ
  5. js 判断 浏览器 是否为 微信 浏览器
  6. 再提“鸿蒙”,任正非说这是为物联网而生;硅谷公司年薪报告出炉,谷歌年薪居榜首;苹果CEO库克接班人浮出水面,苹果高层或大换血?...
  7. openstack中resize更改虚拟机内存、cpu大小后虚拟机状态显示VERIFY_RESIZE
  8. 【无人机】欧盟发布无人机新规
  9. VS2010/MFC编程入门之三十二(常用控件:标签控件Tab Control 上)
  10. bert中最大处理序列长度超过512的处理策略
  11. MATLAB 显示和保存傅里叶变化频谱图
  12. 插入法排序(c语言)
  13. 解决ios的webview中上/下拉露出黑灰色背景问题
  14. 【读书笔记】法治的细节——做我们觉得对的事情,然后接受它的事与愿违
  15. x265 HEVC编码器,基于x264 介绍
  16. 分享6款好用并免费的远程管理工具
  17. 电路设计的3W原则、5W原则、3H原则、5H原则、20H原则、五五规则
  18. 深度:传统服装品牌大量进入,老年身体机能变化催生数千亿中老年服装市场!
  19. sql如何把一个数据库的表复制到另一个数据库中【转载】
  20. ubuntu 18.04装ftp服务器+外网访问

热门文章

  1. #USB加密狗信息安全与USB_Host 硬件读写加密狗
  2. R语言-批量转换变量类型为因子型
  3. 工控协议——S7通讯协议
  4. pandas-综合练习
  5. 一阶线性微分方程的初等积分法
  6. JDK和JRE的区别和联系
  7. 史上最全人工智能英文原版PDF教材1.03G资源包Artificial Intelligence
  8. HTML 标签参考手册 - 功能排序
  9. Odoo12功能模块文档整理
  10. 从零开始Ubuntu16.04+ORBSLAM2+ROS实验实录(四):ORBSLAM评估工具EVO的使用