爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 40797|回复: 64

MODIS产品下载与数据处理小结

  [复制链接]

新浪微博达人勋

0
早起挑战累计收入
发表于 2011-9-24 18:38:49 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
MODIS产品下载与数据处理小结  

本帖转自:http://jaasyang.blog.163.com/blog/static/26626322010115113216720/







以下是我个人总结的关于MODIS产品下载与数据处理方面的一些内容,供想要入门的朋友参考。
从USGS网站 http://glovis.usgs.gov网站可以浏览并下载需要的MODIS数据,不过另一些提供下载的网站还有:
http://e4eil01.cr.usgs.gov:22000/WebAccess/drill?attrib=home&next=group (最佳下载渠道)
http://nsidc.org/data/modis/order_data.html (拥有几乎全部方式的下载链接)
https://wist.echo.nasa.gov/api/ (WIST 搜索和下载MODIS产品的一个网站)
ftp://e4ftl01u.ecs.nasa.gov (FTP下载方式的MODIS产品网站)
其中MODIS产品的介绍可以从网站 https://lpdaac.usgs.gov/lpdaac/products/modis_products_table 了解。
无论何种方式下载,都需要等待很长时间,与网速有很大关系,因为需要一景一景的下载,文件大小根据所选数据产品的类型有关。
一、MODIS产品数据的打开
数据下载后,在ENVI、ERDAS IMAGINE等遥感图像处理软件中都可以打开。如果下载的是HDF格式,在ENVI中直接使用 [File] ----> [Open Image File]命令打开,选择HDF格式就行。打开后,产品自动加载入“Available Band List”中,自动识别地理参考信息。在ERDAS IMAGINE中可以使用[Import]工具选择相应类型打开(这里不作介绍)。
二、MODIS产品数据的感兴趣提取
在ENVI中打开后,需要对影像进行感兴趣区域的提取。这里只介绍一种方法,即使用已有的矢量多边形数据提取影像中的感兴趣区域。一般这种情况是根据某国家(省、市、地区等)行政边界提取某地区的影像数据。首先在选中的产品数据的打开窗口(Image Display)中添加矢量边界层([Overlay]--->[Vectors]),然后选择[Basic Tools]中的[Masking]菜单下的[Build Mask]工具,打开后,首先选择你打开影像数据的窗口(Select Input Display),如果你影像在Display #1中打开,就选择选项中的Display #1即可。点击[OK]后跳出的对话框中的[Options]菜单下选择[Import EVFs]命令(当然,这个根据你定义感兴趣区域的数据选择,如果是ROI,则选择[Import ROIs]),选中矢量边界文件(.evf格式),再确定输出结果的方式[File]或[Memory]。一般我选后者。点击[Apply]后生成MASK文件。利用生成的MASK文件使用[Apply Mask]工具进行掩膜操作,即只提取感兴趣区域。
在[Apply Mask Input File]窗口中,选择原始影像文件,即打开的影像。选中文件后,进入[Spatial Subset]中,点击[ROI/EVF]按钮,选择感兴趣矢量文件,和刚才定义MASK所用的矢量evf文件相同。[OK]后推出,再点击[Select Mask Band]按钮,选择刚刚生成的MASK文件,完成后,[OK]即可完成感兴趣影像的提取。忘记提到的是,MASK掉的部分默认值为0.0。
三、MODIS产品数据的重新投影
MODIS产品数据的投影一般是Sinusoidal,不符合我们正常使用数据的查看方式,因此需要进行重新投影。一般我选择UTM,WGS84形式的。以河南省为例,我通过上一步的感兴趣提取操作后,对感兴趣区域进行重新投影。在ENVI中的[Map]菜单下选择[Convert Map Projection]命令,进入对话框,点击[Chang Proj...]按钮,选择UTM,[Datum]为WGS84,[Zone]为50。[OK]后,再[OK],完成重新投影。如果打开的影像发现是全白色的,只有一些区域是黑色的,那么你将红色框调整到某个位置,进行图像增强就可以了,如线性拉伸、直方图均衡等。
如果输出的重投影影像看上去还是感兴趣小,图像大的时候,你可以再针对这个数据做一次MASK操作。记得[Spatial Subset]一定要定义好,和上同。
今天就说到这里了,附上河南省的MODIS产品图(EVI的)。
3284812978213884542.png
四、MRT批处理MODIS产品数据

Modis Reprojection Tool 可以批处理Modis产品,如mosaic,resample,reprojection。在windows平台下可以在Dos命令框中运行自己创建的批处理*.bat文件实现批处理。值得注意的是:MRT工具读取文件的路径不可以包含中文字符,因此,请将文件保存在英文字母的路径下。这里只以Global 0.05Deg MOD11C3产品为例,提取2001~2007年北京地区的图像。使用的命令是resample。

Resample -p *.prm -I *.hdf -o *.tif

*.prm文件如下:

INPUT_FILENAME = C:\TDDOWNLOAD\MOD11C3\MOD11C3.A2001001.005.2006360120227.hdf

SPECTRAL_SUBSET = ( 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 )

SPATIAL_SUBSET_TYPE = INPUT_LAT_LONG

SPATIAL_SUBSET_UL_CORNER = ( 41.06 115.41 )

SPATIAL_SUBSET_LR_CORNER = ( 39.42 117.5 )

OUTPUT_FILENAME = C:\TDDOWNLOAD\MOD11C3\output\MOD11C3.A2001001.005.tif

RESAMPLING_TYPE = BILINEAR

OUTPUT_PROJECTION_TYPE = GEO

OUTPUT_PROJECTION_PARAMETERS = (

0.0 0.0 0.0

0.0 0.0 0.0

0.0 0.0 0.0

0.0 0.0 0.0

0.0 0.0 0.0 )

DATUM = WGS84

OUTPUT_PIXEL_SIZE = 0.005


批处理命令可在EXCEL中制作完成,如图

3284812978213884542.png


五、使用MCTK进行MODIS数据的批处理

由于MODIS数据量比较大,有时候批处理使用第四部分的方法还是比较麻烦。可以使用MCTK工具(MODIS CONVERSION TOOLKIT)在IDL编程环境下进行批处理。网站上有MCTK工具的下载链接。下面提供本人最近处理一批MOD13Q1数据的批处理代码(仅供参考):
PRO BATCH_MOD13Q1_PROCESS
    COMPILE_OPT IDL2
    ENVI, /RESTORE_BASE_SAVE_FILES
    ENVI_BATCH_INIT, LOG_FILE='BATCH.LOG'
    PRINT, 'START : ',SYSTIME()
   
    ROOT_DIR = 'G:\MODIS\HENAN_RICE_SEASON\MOD13Q1\'
    FNS = FILE_SEARCH(ROOT_DIR,'*.HDF',COUNT = COUNT)
    PRINT, 'There ara totally', COUNT,' images.'
   
    OUTPUT_LOCATION = 'G:\MODIS\HENAN_RICE_SEASON\MOD13Q1\OUTPUT_LOCATION\'
    GRID_NAME = 'MODIS_Grid_16DAY_250m_500m_VI'
    SD_NAME_EVI = ['250m 16 days EVI']
    SD_NAME_QA = ['250m 16 days VI Quality']
    SD_NAME_NIR = ['250m 16 days NIR reflectance']
    SD_NAME_MIR = ['250m 16 days MIR reflectance']
    ;OUTPUT_METHOD = 1  ;REPROJECTED
    OUTPUT_METHOD = 0 ;Standard
   
    ;投影转换设定
    ;UNITS = ENVI_TRANSLATE_PROJECTION_UNITS('Meters')
    ;OUTPUT_PROJECTION = ENVI_PROJ_CREATE(/UTM,ZONE=49,UNITS=UNITS)
    ;OUTPUT_PS_X = 250
    ;OUTPUT_PS_Y = 250
   
    ;INTERPOLATION_METHOD = 8 ;TRIANGULATION WITH NEAREST NEIGHBOR
   
    ;导出EVI, MIR, NIR, QA
    FOR i = 0, COUNT-1  DO BEGIN
        FILENAME = FNS
        A = STRPOS(FILENAME,'.')
        OUTPUT_ROOT_NAME_NIR = 'NIR_'+ STRMID(FILENAME,A+1,8)
        CONVERT_MODIS_DATA, IN_FILE = FILENAME, $
            OUT_PATH = OUTPUT_LOCATION, OUT_ROOT=OUTPUT_ROOT_NAME_NIR, $
            /HIGHER_PRODUCT, /GRID, GD_NAME=GRID_NAME,SD_NAME = SD_NAME_NIR, $
            OUT_METHOD = OUTPUT_METHOD, $;OUT_PROJ = OUTPUT_PROJECTION, $
            OUT_PS_X = OUTPUT_PS_X, OUT_PS_Y = OUTPUT_PS_Y, $
            NUM_X_PTS = 50, $
            NUM_Y_PTS=50, $;INTERP_METHOD = INTERPOLATION_METHOD, $
            BACKGROUND='0', FILL_REPLACE_VALUE='0',$
            R_FID_ARRAY=R_FID_ARRAY, R_FNAME_ARRAY=R_FNAME_ARRAY, /NO_MSG
            
        OUTPUT_ROOT_NAME_MIR = 'MIR_' + STRMID(FILENAME,A+1,8)
        CONVERT_MODIS_DATA, IN_FILE = FILENAME, $
            OUT_PATH = OUTPUT_LOCATION, OUT_ROOT=OUTPUT_ROOT_NAME_MIR, $
            /HIGHER_PRODUCT, /GRID, GD_NAME=GRID_NAME,SD_NAME = SD_NAME_MIR, $
            OUT_METHOD = OUTPUT_METHOD, $;OUT_PROJ = OUTPUT_PROJECTION, $
            OUT_PS_X = OUTPUT_PS_X, OUT_PS_Y = OUTPUT_PS_Y, $
            NUM_X_PTS = 50, $
            NUM_Y_PTS=50, $;INTERP_METHOD = INTERPOLATION_METHOD, $
            BACKGROUND='0', FILL_REPLACE_VALUE='0',$
            R_FID_ARRAY=R_FID_ARRAY, R_FNAME_ARRAY=R_FNAME_ARRAY, /NO_MSG
            
        OUTPUT_ROOT_NAME_EVI = 'EVI_' + STRMID(FILENAME,A+1,8)
        CONVERT_MODIS_DATA, IN_FILE = FILENAME, $
            OUT_PATH = OUTPUT_LOCATION, OUT_ROOT=OUTPUT_ROOT_NAME_EVI, $
            /HIGHER_PRODUCT, /GRID, GD_NAME=GRID_NAME,SD_NAME = SD_NAME_EVI, $
            OUT_METHOD = OUTPUT_METHOD, $;OUT_PROJ = OUTPUT_PROJECTION, $
            OUT_PS_X = OUTPUT_PS_X, OUT_PS_Y = OUTPUT_PS_Y, $
            NUM_X_PTS = 50, $
            NUM_Y_PTS=50, $;INTERP_METHOD = INTERPOLATION_METHOD, $
            BACKGROUND='0', FILL_REPLACE_VALUE='0',$
            R_FID_ARRAY=R_FID_ARRAY, R_FNAME_ARRAY=R_FNAME_ARRAY, /NO_MSG
            
        OUTPUT_ROOT_NAME_QA = 'QA_' + STRMID(FILENAME,A+1,8)
        CONVERT_MODIS_DATA, IN_FILE = FILENAME, $
            OUT_PATH = OUTPUT_LOCATION, OUT_ROOT=OUTPUT_ROOT_NAME_QA, $
            /HIGHER_PRODUCT, /GRID, GD_NAME=GRID_NAME,SD_NAME = SD_NAME_QA, $
            OUT_METHOD = OUTPUT_METHOD, $;OUT_PROJ = OUTPUT_PROJECTION, $
            OUT_PS_X = OUTPUT_PS_X, OUT_PS_Y = OUTPUT_PS_Y, $
            NUM_X_PTS = 50, $
            NUM_Y_PTS=50, $;INTERP_METHOD = INTERPOLATION_METHOD, $
            BACKGROUND='0', FILL_REPLACE_VALUE='0',$
            R_FID_ARRAY=R_FID_ARRAY, R_FNAME_ARRAY=R_FNAME_ARRAY, /NO_MSG
    ENDFOR

    PRINT, 'END : ', SYSTIME()
    ENVI_BATCH_EXIT
   
END



评分

参与人数 4威望 +6 金钱 +42 贡献 +13 收起 理由
阿华田 + 10
天目神眉 + 2 + 10 赞一个!
topmad + 2 + 10 + 10 mofangbao给力啊,这么好的东西
传说中的谁 + 2 + 12 + 3 没用过,看见长文就觉得牛逼

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-9-24 18:49:57 | 显示全部楼层
好东西,也许以后用得着,感谢清风大大码了那么多字
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-9-24 18:50:56 | 显示全部楼层
清风,你辛苦了,确实解决了我的下一步工作的所需啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-9-24 18:53:41 | 显示全部楼层
这个我貌似看过,但是还是好多都不会,期待大牛出现{:eb343:}{:eb343:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-9-24 19:05:03 | 显示全部楼层
码了那么多字,辛苦了~~~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-9-27 20:18:49 | 显示全部楼层
这个很给力啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-9-28 12:10:15 | 显示全部楼层
清风很有奉献精神啊,赞。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-9-30 11:50:20 | 显示全部楼层
大大滴好银啊!!!!{:eb343:}{:eb343:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-10-9 20:03:38 | 显示全部楼层
感谢了,很有用啊,多谢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-3-17 09:20:57 | 显示全部楼层
楼主很棒!
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表