用IDL打开NC格式的FY-4A AGRI 云检测CLM产品文件并转为ENVI标准格式

一、下载数据,理解名称

第一步,下载好一个NC格式FY-4A AGRI 云检测CLM产品,这里下载的是云检测实时产品(中国区域/标称);下载好的名称如下图所示:

FY4A:卫星名;AGRI:仪器名称;N_REGC:中国区域;1047E:星下点经度;L2:数据级别;CLM:云检测产品;

20180620203000:观测起始时间:2018年6月20日20时30分00秒(UTC时);

20180620203416:观测结束时间:2018年6月20日20时34分16秒(UTC时);

4000M:空间分辨率;NC:文件格式。

二、查看数据定义

在这里http://satellite.nsmc.org.cn/PortalSite/StaticContent/DocumentDownload.aspx?TypeID=15下载FY-4A云检测实时产品格式说明文档,并查阅;

用IDL打开NC格式的FY-4A AGRI 云检测CLM产品文件并转为ENVI标准格式_第1张图片

 

从文档中可以找到,云检测的主要数据存储在变量CLM中。每个像元的值有以下含义:0表示有云(cloud);1表示可能有云(probably cloud);2表示可能晴空(probably clear);3表示晴空(clear);126表示太空(space);127表示填充值(fillvalue)。

三、编写代码

我用的是ENVI 5.1,是不可以直接打开NC格式的文件的,但是可以用IDL读取并转换文ENVI标准格式在ENVI里打开,参考代码如下:

;❀❀❀❤❤❤这个程序是为了博客“用IDL读取NC格式的FY-4A AGRI 云检测CLM产品文件并转为ENVI标准格式”而创作
;❀❀❀❤❤❤编写人:大脸婵
;❀❀❀❤❤❤编写环境:ENVI5.1+IDL8.3
;❀❀❀❤❤❤编写日期:2019.6.20
pro REAd_NC_CLM_to_STANDARD_ENVI

  ;严格编译规则
  compile_opt idl2

  ;初始化
  envi, /restore_base_save_files
  envi_batch_init

  ;设定目录窗口,打开需要处理的NC格式数据
  NC_File = dialog_pickfile(/multiple_files,  title = '打开需要转换的数据')
  ;定义ENVI标准格式文件的数量N
  N = n_elements(NC_File)

  ;构建for循环,依次处理NC文件
  for i = 0,N - 1 do begin
    ;打开NC文件
    ID_Nc_File = ncdf_open(NC_File[i], /write)
    ;查看NC文件的指定变量'CLM'
    CLM_id = NCDF_VARID(ID_Nc_File, 'CLM')
    ;读取CLM到CLM_arr中
    NCDF_VARGET, ID_Nc_File, CLM_id, CLM_arr
    
    ;获取CLM_arr这个数组每个维度的维数,CLM_arr在这里一般是一个二维数组,
    ;1108×2748,第一个维数是sample,第二个维数是line,需要在后面设置头文件里使用
    dimensions = size(CLM_arr,/dimensions)
    
    ;用file_basename提取文件名
    NC_File_Basename = file_basename(NC_File[i], '.NC')
    ;用strmid提取文件名中的日期Date,从第45个字符开始往后14个,YYYYMMDDHHMMSS
    Date = strmid(NC_File_Basename,44,14)
    ;❀❀❀这里需要注意设定输出路径❀❀❀
    Out_Path = 'F:\test\'
    
    ;写成envi标准格式文件
    envi_write_envi_file, CLM_arr, $
      INTERLEAVE = 0, $ ;存储方式设置为BSQ
      nb = 1, $ ;波段数量为1
      nl = dimensions[1], $ ;Line的数量为dimensions的第2个数
      ns = dimensions[0], $ ;Sample的数量为dimensions的第1个数
      out_name = Out_path + Date + '_CLM.dat',$ ;这里设置新文件的输出路径和名称
      r_fid = fid ;返回新生成文件的ID,这时新文件已经在ENVI中打开了
    envi_file_mng, ID = fid, /remove ;把新文件在ENVI中关掉
  endfor
  ;关闭
  envi_batch_exit
end

四、打开生成的文件查看

处理后在envi中打开,并将五个值填充不同的颜色,可以看到图像中的云的分布概况:0填充为白色,表示有云(cloud);1填充为浅蓝色,表示可能有云(probably cloud);2填充为黄色,表示可能晴空(probably clear);3填充为绿色,表示晴空(clear);126填充为黑色,表示太空(space);127填充为灰色,表示填充值(fillvalue)。

注意:该文件只是一个半圆盘,是没有地理信息的,具体可以用查找表的方式将其转换成等经纬度投影等,下一篇讲。

用IDL打开NC格式的FY-4A AGRI 云检测CLM产品文件并转为ENVI标准格式_第2张图片

你可能感兴趣的:(用IDL打开NC格式的FY-4A AGRI 云检测CLM产品文件并转为ENVI标准格式)