分享

MODIS产品下载与数据处理小结 - 易歌的日志 - 网易博客

 xiaoyutan 2011-04-19

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

遥感基础与处理 2010-02-15 23:32:16 阅读2442 评论34   字号: 订阅

以下是我个人总结的关于MODIS产品下载与数据处理方面的一些内容,供想要入门的朋友参考。

从USGS网站 http://glovis.网站可以浏览并下载需要的MODIS数据,不过另一些提供下载的网站还有:

http://e4eil01.cr.:22000/WebAccess/drill?attrib=home&next=group (最佳下载渠道)

http:///data/modis/order_data.html (拥有几乎全部方式的下载链接)

https://wist.echo./api/ (WIST 搜索和下载MODIS产品的一个网站)

ftp://e4ftl01u.ecs. (FTP下载方式的MODIS产品网站)

其中MODIS产品的介绍可以从网站 https://lpdaac./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的)。

MODIS产品下载与数据处理小结 - 易歌 - Science  Technology

四、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中制作完成,如图

MODIS产品下载与数据处理小结 - 易歌 - Science  Technology

 

五、使用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[i]
        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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多