数据
说明
- 因为250m的定位数据缺少角度信息,不能定标至大气层顶反射率,所以只做了1KM
- 暂时没做GUI和批量功能,等到明年年初再看情况做
- 关于发射率,官方说明是不需要定标,只需要通过slope和intercept线性转换就行
- 关于亮温的计算,单位给我整懵了,所以直接参考了下面这篇硕士论文里的计算公式
- 2020-07-15更改:感谢易智瑞的杜老师能够发现代码中的定标问题,现已修改。
基于多源卫星数据的秸秆焚烧监测研究
使用
- 编译
- 命令行键入如下代码,其中
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
- 数据所在文件夹生成两个文件,形如
FY3D_date_TOA.dat
为定标的19谱段TOA数据,形如FY3D_date_BT.dat
为5谱段的亮温数据。
源码
pro preFY_1K, fnDat, fnLoc
compile_opt idl2, hidden
tic
DLM_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, fdid
flid = H5F_OPEN(fnLoc)
lat = h5GetData(flid, '/Geolocation/Latitude')
lon = h5GetData(flid, '/Geolocation/Longitude')
slrZth = h5GetData(flid