AOD演習、MODISデータダウンロード、MODISデータ処理

MODIS データのダウンロード - データの読み取り - 再投影 - スプライシング - 平均

1. データダウンロード

1. Cygwinのインストール

Cygwin インストール チュートリアル: https://blog.csdn.net/u010356768/article/details/90756742

1.2 データ収集

現在、NASA データを中心としたリモート センシング データ ダウンロード サービスが提供されています。データ ダウンロード サイトには次のものがあります。

LAADSDAAC: https://ladsweb.modaps.eosdis.nasa.gov/
href="https://ladsweb.modaps.eosdis.nasa.gov/search/

アースデータ: https://search.earthdata.nasa.gov/

2.Cのダウンロード

Cygwin を使用して衛星データをバッチでダウンロードし、MODIS データを例として取り
、Cygwin64 ターミナルを開き、次のコマンドを順番に入力し、コマンドの各行の後で Enter を押します。
1. cd G:\trydata\data\
.sh ファイルが存在するフォルダーへのパスを切り替えます。イタリック体を、.sh ファイルを自分で保存するパスに変更します。
2. chmod 777 5386246296-download.sh
.sh ファイルを実行可能ファイルに変換します。イタリック体を独自の .sh ファイル名に変更します。
3. ./5386246296-download.sh
.sh ファイルを実行します。./ の後の斜体を独自の .sh ファイル名に変更します。
Usernameとpassword、つまりEARTHDATAのユーザー名とパスワードを入力します。ただし、パスワードを入力する際に​​は画面は表示されませんので、入力後Enterを押してください。

3. Google Chrome拡張機能のダウンロード

Chrome ウェブストアから Chrono プラグインをダウンロードします。
ここに画像の説明を挿入

2、HDFデータ読み込み(MATLAB)

hdr = read_envihdr('****.hdr');
Image = multibandread('****.dat',hdr.size,[hdr.format '=>double'],hdr.header_offset,hdr.interleave,hdr.machine);

エアロゾル製品 MOD04 から 550nm でのエアロゾルの厚さを抽出する方法

データ処理を行う場合は、それを実行するプログラムを直接作成するのが最善です。matlab には既製のサブルーチンhdftoolがあり、入力する必要があるパラメーターをクリックすると、入力ステートメントの記述メソッドが表示されます。それを .m ファイルに記述して、ループ。データの内部の状況を見たい場合は、hdfview
mod04を使用することもできます。エアロゾルデータはブロックに分散されており、毎日異なる時間のhdfファイルです。あるhdfファイルはmatlabのhdftoolで読み込むことができますが、
同じ日の異なる期間のデータを結合して毎日のデータを生成するにはどうすればよいですか? では、座標系を指定した tiff 形式に変換するにはどうすればよいでしょうか?
データ格納アドレスが fpath = 'E:\MODIS';
file = dir([fpath '*.hdf']); % 読み込むすべてのファイルの名前を取得
for i =1:numel(file)
data = [] ; %読み込むプリセット変数名
fn = [fpath file(i,1).name];
% これで変数を読み取れるようになります
data = hdfread(fn,...);
save([outpath matfn], 'data'); % outpath は出力ファイルのアドレス matfn は保存するファイル名、この時点で mat ファイルは最後に保存され
ます

3. MOD04_L2バッチ処理の再投影

MCTK マニュアル アプリケーション

画像の説明を追加してください
画像の説明を追加してください
画像の説明を追加してください
画像の説明を追加してください

バッチ処理

pro modis_mctk
  compile_opt idl2
  e=envi(/headless)
  
  fn= dialog_pickfile(title="open the mod04 data",/directory) ;打开数据目录
  output_location = 'D:\data\data1\' ;输出路径
  files=file_search(fn,"*.hdf",count=nums)
  bridges = mctk_create_bridges()
  
  for i=0,nums-1 do begin ;每一个影像进行处理
    modis_swath_file=files[i]
    basename=file_basename(files[i]) ;获取输入影像文件名
    output_rootname=strmid(basename,0,32) ;获取指定范围名字
    swath_name = 'mod04';这个值自己根据自己数据设置,用hdfviewer打开后,会显示
    sd_names = ['AOD_550_Dark_Target_Deep_Blue_Combined'] ;;这是数据集名称,是一个字符串数组
    ;  以下参数需要自己去看文档,一般保持不变 。官方地址:https://github.com/dawhite/MCTK
    out_method = 1
    output_projection = envi_proj_create(/geographic)
    interpolation_method = 0
    print,output_rootname
    
    convert_modis_data, in_file=modis_swath_file, $
      out_path=output_location, out_root=output_rootname, $
      swt_name=swath_name, sd_names=sd_names, $
      out_method=out_method, out_proj=output_projection, $
      interp_method=interpolation_method, /no_msg, $
      r_fid_array=r_fid_array, r_fname_array=r_fname_array, $
      bridges=bridges, msg=msg
  endfor
  mctk_destroy_bridges, bridges
end

4. MOD04_L2バッチ処理のスプライシング

1. MODIS画像一括モザイクステッチ法(IDL/ENVI)

(いいえ、あなたが教えてください!!!)

2、ENVIモザイク

2.1 マニュアル

[ENVI入門シリーズ] 09. 画像モザイク: http://blog.sina.com.cn/s/blog_764b1e9d0102v1p9.html
ENVI5.1シームレスモザイクツール(専用機能)
ファイル選択
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

2.2 二次開発 - ステッチング

PRO MOSAIC_BATCH
  COMPILE_OPT IDL2
  ; 启动ENVI 5.1
  e = ENVI()

  fn= dialog_pickfile(title="Select input scenes",/directory) ;打开数据目录
  files=file_search(fn,"*.dat",count=nums)
  ; output_location = 'D:\data\outdata3\' ;输出路径


  scenes = !NULL
  ; 将每一个Raster放在一个Scenes中
  FOR i=0, N_ELEMENTS(files)-1 DO BEGIN
    basename=file_basename(files[i]) ;获取输入影像文件名
    name=strmid(basename,0,20) ;获取指定范围名字
    
    for n=0, 12 do begin
      m=i+n
      basename_1=file_basename(files[m]) ;获取输入影像文件名
      name_1=strmid(basename_1,0,20) ;获取指定范围名字
      print,basename_1
      if name_1 ne name then break
      raster = e.OpenRaster(files[m])
      scenes = [scenes, raster]
    endfor
    i=m-1
 
  ; 创建ENVIMosaicRaster对象
  mosaicRaster = ENVIMosaicRaster(scenes,$
    background = -999,$
    color_matching_method = 'histogram matching',$
    color_matching_stats = 'overlapping area',$
    feathering_distance = 20,$
    feathering_method = 'seamline',$
    resampling = 'bilinear',$
    seamline_method = 'none')
    

;  newFile = ENVI_PICKFILE(title='Select output file', $ /output)
;  IF FILE_TEST(newFile) THEN FILE_DELETE, newFile

    ; 设置输出路径
   output_location = 'G:\NDVI\mosaic\' + name + '.dat' ;输出路径
   IF FILE_TEST(output_location) THEN FILE_DELETE, output_location 
    ; 输出镶嵌结果
  mosaicRaster.Export, newFile, 'ENVI'

 ENDFOR
END

5. 切断

App Store のダウンロードとインストールのバッチ ツールキット
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

6. 平均値の計算

pro modis_swath_average
  start_time= systime(1)
  input_directory= 'D:\study\AOD\Mosaicdata1\'
  output_directory=input_directory
  file_list=file_search(input_directory,'*.tif');路径

  file_n=n_elements(file_list)
  output_resolution=0.03 ;像元分辨率
  output_name=output_directory+'avr.tif'
  ;结果
  print,file_n
  ;循环,读图像信息:经纬度
  lon_min=9999.0
  lon_max=-9999.0
  lat_min=9999.0
  lat_max=-9999.0
  for file_i=0,file_n-1 do begin
    data=read_tiff(file_list[file_i],geotiff=geo_info)
    data_size=size(data)
    data_col=data_size[1]
    ;范围:最大
    data_line=data_size[2]
    resolution_tag=geo_info.(0)
    geo_tag=geo_info.(1)
    temp_lon_min=geo_tag[3]
    temp_lon_max=temp_lon_min+data_col*resolution_tag[0]
    temp_lat_max=geo_tag[4]
    temp_lat_min=temp_lat_max -data_line*resolution_tag[1]

    if temp_lon_min lt lon_min then lon_min=temp_lon_min
    if temp_lon_max gt lon_max then lon_max=temp_lon_max
    if temp_lat_min lt lat_min then lat_min=temp_lat_min
    if temp_lat_max gt lat_max then lat_max=temp_lat_max
  endfor

  ;经纬度数据存储
  data_box_geo_col=ceil((lon_max-lon_min)/output_resolution)
  data_box_geo_line=ceil((lat_max-lat_min)/output_resolution)
  data_box_geo_sum=fltarr(data_box_geo_col,data_box_geo_line)
  data_box_geo_num=fltarr(data_box_geo_col,data_box_geo_line)


  ;逐像元循环位置
  for file_i=0,file_n-1 do begin
    print,file_list[file_i]
    data=read_tiff(file_list[file_i],geotiff=geo_info)
    data_size=size(data)
    data_col=data_size[1]
    data_line=data_size[2]
    resolution_tag=geo_info.(0)
    geo_tag=geo_info.(1)
    temp_lon_min=geo_tag[3]
    temp_lat_max=geo_tag[4]

    for data_col_i=0,data_col-1 do begin
      for data_line_i=0,data_line-1 do begin
        temp_lon=temp_lon_min+data_col_i*resolution_tag[0]
        temp_lat=temp_lat_max-data_line_i*resolution_tag[1]
        data_box_col_pos=floor((temp_lon-lon_min)/output_resolution)
        data_box_line_pos=floor((lat_max-temp_lat)/output_resolution)

        if (data[data_col_i,data_line_i]eq 0.0)then continue
        data_box_geo_sum[data_box_col_pos,data_box_line_pos]=data_box_geo_sum[data_box_col_pos,data_box_line_pos]+data[data_col_i,data_line_i]
        data_box_geo_num[data_box_col_pos,data_box_line_pos]=data_box_geo_num[data_box_col_pos,data_box_line_pos]+1.0
      endfor
    endfor


    ;col_start=floor((temp_lon_min-lon_min)/output_resolution)
  ;  line_start=floor((lat_max-temp_lat_max)/output_resolution)
  ;  data_box_geo_sum[col_start:col_start+data_col-1,line_start:line_start+data_line-1]+=data
  ;  data_box_geo_num[col_start:col_start+data_col-1,line_start:line_start+data_line-1]+=(data gt 0.0)

  endfor

  data_box_geo_num=(data_box_geo_num gt 0.0)*data_box_geo_num+(data_box_geo_num eq 0.0)
  data_box_geo_avr=data_box_geo_sum/data_box_geo_num

  geo_info={
    
    $
    MODELPIXELSCALETAG:[output_resolution,output_resolution,0.0],$
    MODELTIEPOINTTAG:[0.0,0.0,0.0,lon_min,lat_max,0.0],$
    GTMODELTYPEGEOKEY:2,$
    GTRASTERTYPEGEOKEY:1,$
    GEOGRAPHICTYPEGEOKEY:4326,$
    GEOGCITATIONGEOKEY:'GCS WGS_1984',$
    GEOGANGULARUNITSGEOKEY:9102,$
    GEOGSEMIMAJORAXISGEOKEY:6378137.0,$
    GEOGINVFLATTENINGGEOKEY:298.25722}

  write_tiff,output_name,data_box_geo_avr,geotiff=geo_info,/float
  end_time=systime(1)
  print,'Time consuming: '+strcompress(string(end_time-start_time))
end

HDRからTIFFへの変換

ここに画像の説明を挿入

7、tiffデータ読み込み

[A,R] = geotiffread(ファイル名)

おすすめ

転載: blog.csdn.net/weixin_44083023/article/details/130349230