对风云3(FY3)条带亮度温度数据进行几何校正,结果发现相同代码下,ENVI5.1+IDL8.3与 ENVI5.3+IDL8.5运行结果明显不同
代码如下:
pro fy3d_geo
in_path ='D:\_User\test_he5\'
out_path_rad = 'D:\_User\test_rad\'
out_path_geo = 'D:\_User\test_geo\'
file_arr = file_search(in_path, '*.he5')
fileCount = n_elements(file_arr)
for i=0, fileCount-1 do begin
print, 'Processing... ' + file_arr[i]
file = file_arr[i]
filename = file_basename(file, '.he5')
hd_id = h5f_open(file)
sd_id1 = h5d_open(hd_id,'/Geolocation/Latitude')
sd_id2 = h5d_open(hd_id,'/Geolocation/Longitude')
lat = h5d_read(sd_id1)
lon = h5d_read(sd_id2)
lat[where(lat eq 65535)] = 90
lon[where(lon eq 65535)] = -180
sd_id3 = h5d_open(hd_id,'/Calibration/EARTH_OBSERVE_BT_10_to_89GHz')
bt = h5d_read(sd_id3)
bt89V = bt[*,*,8]
bt89V_rad = bt89V*0.01+327.68
fileLat = out_path_rad+filename+'_lat.tif'
fileLon = out_path_rad+filename+'_lon.tif'
file89V = out_path_rad+filename+'_89V_rad.tif'
write_tiff, fileLat, lat, /float
write_tiff, fileLon, lon, /float
write_tiff, file89V, bt89V_rad, /float
e = envi(/headless)
rasterLat = e.openraster(fileLat)
rasterLon = e.openraster(fileLon)
raster89V = e.openraster(file89V)
; 89V
file_geo89V = out_path_geo+filename+'_89V_geo'
Task = envitask('ReprojectGLT')
Task.INPUT_RASTER = raster89V
Task.LATITUDE_RASTER = rasterLat
Task.LONGITUDE_RASTER = rasterLon
Task.OUTPUT_RASTER_URI = file_geo89V
Task.execute
envi_open_file, file_geo89V, R_FID =FID
envi_file_query, fid, dims=dims, nb=nb, fname=fname, data_type=data_type, interleave=interleave
out_name = out_path_geo+filename+'_89V_geo.tif'
envi_output_to_external_format, OUT_NAME = out_name, FID = fid, DIMS=dims, POS = indgen(nb), /TIFF
endfor
print, 'finish'
end
ENVI5.3+IDL8.5结果如下
ENVI5.1+IDL8.3结果如下
ENVI5.1+IDL8.3的ReprojectGLT的结果在质量上明显优于ENVi5.3+IDL8.5