登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
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的)。
四、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中制作完成,如图
五、使用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
|