注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

面朝大海 春暖花开

一点心得,转载本博客文章,请注明转帖,谢谢!

 
 
 

日志

 
 
关于我

中国科学院博士 主要从事遥感机理、定量反演、数据处理以及GIS应用研究。ArcGIS、Envi 、ERDAS、Ecognition软件、IDL语言、6S、SAIL

网易考拉推荐

【转载】MODIS数据批量转换投影  

2014-10-24 15:58:25|  分类: idl |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Q:有大量MODIS正弦投影(Sinusoidal)影像转为经纬度(Geographic)投影

对这个问题有两种可用的方法,分别是:

A1: 用IDL+ENVI批处理程序

A2:MODIS Reprojection Tool(MRT)批处理程序

开始:

A1数据准备:MODIS HDF文件或其他ENVI格式文件

A1程序:用IDL+ENVI批处理程序,以HDF输入格式为例

 

            MOD09HDF-波段1、4、3

pro enviprojection 

  ; First restore all the base save files. 

  COMPILE_OPT IDL2

  envi, /restore_base_save_files 

  ; Initialize ENVI and send all errors 

  ; and warnings to the file batch.txt 

  envi_batch_init, log_file='batch.txt' 

  ; Open the input file 

  ; 

  cd,'E:\'

  HDFFiles = FILE_Search("*.HDF")

  FileCount = N_ELEMENTS(HDFFiles)

  IF FileCount EQ 0 THEN RETURN

  ;定义投影为经纬度投影

  o_proj = ENVI_PROJ_CREATE(/geographic)

  FOR NX =0,FileCount -1 DO BEGIN

     FileName = HDFFiles[NX]

     envi_open_file, FileName , r_fid=fid 

  if (fid eq -1then begin 

    envi_batch_exit 

    return 

  endif 

  ; 

  ; Setup the values for the keywords 

  envi_file_query, fid[0], dims=dims, nb=nb 

  pos  = lindgen(nb) 

  indexstr = strposSTRUPCASE(FileName),".HDF")

  out_name = strmid(FileName,0,indexstr) + "_Geo.raw"

;设置输出像元大小

o_pixel_size = [0.008627,0.008627]  ; 

  ; 

  envi_convert_file_map_projection, fid=fid, $ 

    pos=pos, dims=dims, o_proj=o_proj, $ 

    o_pixel_size=o_pixel_size, grid=[10,10], $ 

    out_name=out_name, warp_method=0, $ 

    resampling=0, background=0

  ENVI_FILE_MNG,id = fid,/remove

  ENDFOR

  ; 

  ; Exit ENVI 

  ; 

  envi_batch_exit 

end 

这个程序你要是想用的话只要改输入数据路径就好了。

                                       IDL+ENVI投影波段1、4、3结果

A2数据准备:MODIS HDF文件

A2程序:MRT批处理程序

这个就厉害了,两行代码就搞定。

这个程序需要两个文件modis.bat和*.prm

首先,新建记事本,在记事本中输入下面代码,改txt后缀为bat,定义modis.bat文件。

rem Set the MRTDATADIR environmental var to the MRT data directory.

 

set MRTDATADIR=C:\MRT\data

for %%i in (*.hdf) do C:\MRT\bin\resample -p my.prm -i %%i -o %%iout.tif

其中,MRTDATADIR为你的MRT安装文件中data的路径

注意,my.prm是用MRT 图形界面工具定义的投影文件,

 

                                                         利用MRT定义投影文件

编辑好两个文件后,将这两个文件和你的数据放在同一个文件夹下,双击modis.bat执行批处理。

 

                                               MRT投影波段1、4、3结果

致谢:envi_projection主要来自于任华忠的贡献,modis.bat来自于蔡文文的贡献。

注意:两种方法的结果有所差异,具体原因还不清楚,欢迎大家交流。但是,我还是觉得MRT的更靠谱,

毕竟人家自己的东西嘛。

对于同一个问题,可以有很多种解决方法,选择最适合你的吧。

  评论这张
 
阅读(282)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017