数据

  • 风云三号D星1KM数据
  • 对应GEO1K定位数据

说明

  • 因为250m的定位数据缺少角度信息,不能定标至大气层顶反射率,所以只做了1KM
  • 暂时没做GUI和批量功能,等到明年年初再看情况做
  • 关于发射率,官方说明是不需要定标,只需要通过slope和intercept线性转换就行
  • 关于亮温的计算,单位给我整懵了,所以直接参考了下面这篇硕士论文里的计算公式
  • 2020-07-15更改:感谢易智瑞的杜老师能够发现代码中的定标问题,现已修改。

基于多源卫星数据的秸秆焚烧监测研究

使用

  1. 编译
  2. 命令行键入如下代码,其中fnDat为数据文件,fnLoc为定位文件
fnDat = 'F:\FY3D_MERSI_GBAL_L1_date_1000M_MS.HDF'
fnDat = 'F:\FY3D_MERSI_GBAL_L1_date_GEO1K_MS.HDF'
preFY_1K, fnDat, fnLoc
  1. 数据所在文件夹生成两个文件,形如FY3D_date_TOA.dat为定标的19谱段TOA数据,形如FY3D_date_BT.dat为5谱段的亮温数据。

源码

pro preFY_1K, fnDat, fnLoccompile_opt idl2, hiddenticDLM_LOAD, 'HDF5', 'XML', 'MAP_PE', 'NATIVE'e = ENVI(/h)dirname = FILE_DIRNAME(fnDat)date = (FILE_BASENAME(fnDat)).Extract('20[1-4][0-9][0,1][0-9][0-3][0-9]_[0-9][0-9][0-9][0-9]')fnRef = dirname + PATH_SEP() + 'FY3D_' + date + '_TOA.dat'fnBT = dirname + PATH_SEP() + 'FY3D_' + date + '_BT.dat'fdid = H5F_OPEN(fnDat)rawRefAggr = h5GetData(fdid, '/Data/EV_250_Aggr.1KM_RefSB')rawRef = h5GetData(fdid, '/Data/EV_1KM_RefSB')rawEmsAggr = h5GetData(fdid, '/Data/EV_250_Aggr.1KM_Emissive')rawEms = h5GetData(fdid, '/Data/EV_1KM_Emissive')calCoef = h5GetData(fdid, '/Calibration/VIS_Cal_Coeff')ESUN = h5GetAttr(fdid, 'Solar_Irradiance')dst = (h5GetAttr(fdid, 'EarthSun Distance Ratio'))[0]tbbA = h5GetAttr(fdid, 'TBB_Trans_Coefficient_A')tbbB = h5GetAttr(fdid, 'TBB_Trans_Coefficient_B')H5F_CLOSE, fdidflid = H5F_OPEN(fnLoc)lat = h5GetData(flid, '/Geolocation/Latitude')lon = h5GetData(flid, '/Geolocation/Longitude')slrZth = h5GetData(flid, '/Geolocation/SolarZenith') * 0.01 * !pi / 180EH5F_CLOSE, flidrefChnl = MAKE_ARRAY([2048, 2000, 19], type = 5)refChnl[*, *, 0 : 3] = rawRefAggrrefChnl[*, *, 4 : 18] = rawRefemsChnl = MAKE_ARRAY([2048, 2000, 6], type = 5)emsChnl[*, *, 0 : 3] = rawEmsemsChnl[*, *, 4 : 5] = rawEmsAggrk = (dst ^ 2)for i = 0, 18 do refChnl[*, *, i] = k * $(calCoef[0, i] + calCoef[1, i] * refChnl[*, *, i] $+ calCoef[2, i] * refChnl[*, *, i] ^ 2) $/  COS(slrZth)wn = [2634.359, 2471.654, 1382.621, 1168.182, 933.364, 836.941]for i = 0, 5 do emsChnl[*, *, i] = $tbbA[i] * (1.43878 * wn[i] / ALOG(1 + $(1.191E-5 * wn[i] ^ 3 / emsChnl[*, *, i]))) + tbbB[i]refTempFn = e.GetTemporaryFilename()ref = ENVIRaster(refChnl, $uri = refTempFn, interleave = 'BSQ')ref.Saveref_id = ENVIRasterToFID(ref)ENVI_FILE_QUERY,ref_id, dims = ref_dimsemsTempFn = e.GetTemporaryFilename()ems = ENVIRaster(emsChnl, $uri = emsTempFn, interleave = 'BSQ')ems.Saveems_id = ENVIRasterToFID(ems)latTempFn = e.GetTemporaryFilename()latRaster = ENVIRaster(lat, uri = latTempFn)latRaster.Savelat_id = ENVIRasterToFID(latRaster)lonTempFn = e.GetTemporaryFilename()lonRaster = ENVIRaster(lon, uri = lonTempFn)lonRaster.Savelon_id = ENVIRasterToFID(lonRaster)proj = ENVI_PROJ_CREATE(/GEOGRAPHIC)gltTempFn = e.GetTemporaryFilename()ENVI_DOIT, 'ENVI_GLT_DOIT', DIMS = ref_dims, $I_PROJ = proj,  O_PROJ = proj, $OUT_NAME = gltTempFn, $R_FID = glt_id, ROTATION = 0 , $X_FID = lon_id, X_POS = [0], $Y_FID = lat_id, Y_POS = [0]ENVI_DOIT, 'ENVI_GEOREF_FROM_GLT_DOIT', $BACKGROUND = 0E, FID = ref_id , $GLT_FID = glt_id, R_FID = outR_fid, $OUT_NAME = fnRef, POS = [0 : 18]ENVI_DOIT, 'ENVI_GEOREF_FROM_GLT_DOIT', $BACKGROUND = 0E, FID = ems_id , $GLT_FID = glt_id, R_FID = outB_fid, $OUT_NAME = fnBT, POS = [0 : 5]CD, FILE_DIRNAME(e.GetTemporaryFilename())ref.Close & ems.Close & latRaster.Close & lonRaster.CloseFILE_DELETE, refTempFn, emsTempFn, latTempFn, lonTempFn, $(FILE_BASENAME(refTempFn)).Replace('dat', 'hdr'), $(FILE_BASENAME(emsTempFn)).Replace('dat', 'hdr'), $(FILE_BASENAME(latTempFn)).Replace('dat', 'hdr'), $(FILE_BASENAME(lonTempFn)).Replace('dat', 'hdr'), $/ALLOW_NONEXISTENT, /QUIETENVI_FILE_MNG, id = glt_id, /d, /rrefRaster = e.OpenRaster(fnRef)refRaster.Metadata.UpdateItem, 'band names', $['Ref_1', 'Ref_2', 'Ref_3(Aggr_1)', 'Ref_4',' Ref_5(Aggr_2)', $'Ref_6', 'Ref_7(Aggr_3)', 'Ref_8', 'Ref_9', 'Ref_10', $'Ref_11', 'Ref_12(Aggr_4)', 'Ref_13', 'Ref_14', $'Ref_15', 'Ref_16', 'Ref_17', 'Ref_18', 'Ref_19']refRaster.Metadata.UpdateItem, 'wavelength units', 'Micrometers'refRaster.Metadata.AddItem, 'wavelength', $[0.412, 0.443, 0.47, 0.49, 0.55, 0.555, 0.65, 0.67, $0.709, 0.746, 0.865, 0.865, 0.905, 0.936, 0.94, $1.24, 1.38, 1.64, 2.13]refRaster.WriteMetadatarefRaster.ClosebtRaster = e.OpenRaster(fnBT)btRaster.Metadata.UpdateItem, 'band names', $['Ems_1', 'Ems_2', 'Ems_3', 'Ems_4', $'Ems_5(Aggr_1)', 'Ems_6(Aggr_2)']btRaster.Metadata.UpdateItem, 'wavelength units', 'Micrometers'btRaster.Metadata.AddItem, 'wavelength', $[3.8, 4.05, 7.2, 8.55, 10.8, 12]btRaster.WriteMetadatabtRaster.CloseENVI_FILE_MNG, id = outR_fid, /rENVI_FILE_MNG, id = outB_fid, /re.Closetoc
endfunction h5GetData, fid, strcompile_opt idl2, hiddenstr_id = H5D_OPEN(fid, str)slope = FLOAT(h5GetAttr(str_id, 'Slope'))intercept = FLOAT(h5GetAttr(str_id, 'Intercept'))data = FLOAT(H5D_READ(str_id))foreach _slope, slope, index do $data[*, *, index] = _slope * data[*, *, index] + intercept[index]H5D_CLOSE, str_idRETURN, data
endfunction h5GetAttr, fid, strcompile_opt idl2, hiddenstr_id = H5A_OPEN_NAME(fid, str)attr = H5A_READ(str_id)H5A_CLOSE, str_idRETURN, attr
end

IDL实现风云三号D星1km数据定标及几何校正相关推荐

  1. 风云三号卫星相关学习记录

    Q:风云三号能开展空气质量监测吗? A:大气中气溶胶含量与空气质量密切相关,利用风云三号A星的气溶胶光学厚度产品可区分清洁大气.轻度污染大气.污染大气和重度污染大气,能对空气质量进行评价. 利用紫外臭 ...

  2. 风云三号红外遥感+航天级星基融合定位:埃安星灵架构量产发布

    11月8日晚,埃安正式发布了全新一代高端电子电气架构--星灵架构,这也是埃安在发布全新一代AEP 3.0纯电平台不久后,又一项重磅ICV技术发布.星灵架构在去年已经发布的行业第三代电子电气架构EEA ...

  3. 20-基于GLT的几何校正(风云三号气象卫星为例)

    操作步骤总结: 1.GLT校正风云三号气象卫星---安装补丁:先安装ENVI的HDF5读取补丁,"HDF5读取\open_hdf5_event.sav"将文件复制到".. ...

  4. “珞珈三号01星”首个卫星影像三维模型!——重建大师最新成果

    1月15日11时14分49秒,首颗互联网智能遥感科学实验卫星"珞珈三号01星"承载着"多模""智能""互联"" ...

  5. 2023-4 新一代智能测绘遥感科学试验卫星珞珈三号01星 (笔记)

    当前光学测绘遥感卫星已具备亚米级的空间分辨能力,但测绘遥感信息服务存在严重的滞后问题,亟须发展智能测绘遥感卫星向实时智能服务转型升级. 世界 各 国竞相发展高分 辨 率 光 学 遥 感 卫 星,通 过 ...

  6. 用ENVI为风云三号VIRR地表温度LST日产品添加头文件(地理信息)

    上一篇文章中我们介绍了怎么用ENVI查看风云三号VIRR地表温度LST日产品的属性.下面介绍怎么用ENVI将该产品从HDF格式转换成ENVI标准格式. 2019.1.7更新:有小伙伴说头文件中的dat ...

  7. 基于ENVI-GLT方法的风云三号D微波成像仪(FY3-D-MWRI)传感器的卫星影像的下载和几何校正

    目录 一.下载影像 1.进入风云卫星遥感数据服务网 2.选择卫星.传感器.时间.空间范围(可不选择)等设置: 3.选择影像,右侧位置进行下载. 二.ENVI-GLT几何校正 1.打开亮温数据集 2.打 ...

  8. 如何下载风云三号FY-3D MERSI数据

    可选择所需时段加入购物车,即可进行下载,不必全部下载,增加下载量.

  9. 基于GLT法的风云三号气象卫星校正

    GLT几何校正法利用输入的几何文件生成一个地理位置查找表文件(geographic lookup table,GLT),从该文件中可以了解到某个初始像元在最终输出结果中实际的地理位置.地理位置查找表文 ...

最新文章

  1. 干货 | 神经网络原来这么简单,机器学习入门贴送给你
  2. React history.push 传递参数
  3. 假设有50瓶饮料,喝完3个空瓶可以换一瓶饮料,依次类推,请问总共喝了多少瓶饮料???
  4. pythonappium环境搭建_python appium环境搭建
  5. Oracle之索引、权限
  6. 介绍一下XMLHttpRequest对象,他有哪些常用方法和属性
  7. Qt工作笔记-对setupUi(this)进一步理解
  8. 用node-webkit把web应用打包成桌面应用
  9. ML、DL、CNN学习记录8
  10. for循环的几种写法(变化)
  11. bzoj 4127: Abs(树链剖分+线段树)
  12. 7-2 人民币兑换 (15 分)
  13. HyperVolume多目标评价指标概述
  14. 浅谈电子商务网站购物车
  15. 【JAVA】数据结构——二叉树 例题练习及代码详解
  16. python如何更改背景颜色_python背景颜色,python改背景色
  17. 【K210】K210学习笔记七——使用K210拍摄照片并在MaixHub上进行训练
  18. 软件工程基础第一次作业
  19. SDIO - 1bit / 4bit V2.0 协议深度解析-简单易懂协议详解
  20. Vue3技术4之watch监视属性、watch时value问题

热门文章

  1. BUUCTF-MISC-[GXYCTF2019]SXMgdGhpcyBiYXNlPw==~zip
  2. 一文带你深入了解函数栈帧的创建和销毁
  3. Java 精简Jre
  4. 中国换热器行业“十四五”规划及未来需求规模报告2021-2027年
  5. redis进程占用CPU很高-达到100
  6. linux系统操作系统网卡漂移解决方案及问题原因
  7. LeetCode 2106. 摘水果
  8. linux中hda和sda的区别
  9. HDOJ_ACM_饭卡
  10. 《MySQL技术内幕:InnoDB存储引擎》第2版笔记