首页 > 技术文章 > ENVI5.1 与ENVI5.3 ReprojectGLT结果差异

lqqgis 2020-09-07 13:49 原文

对风云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
 
 

推荐阅读