pyModis是一个专门针对MODIS数据的开源python开发包。该开发包主要实现MODIS数据的批量下载和投影转换(正弦投影转其他投影等)、拼接、裁切、数据抽取等处理功能。对于MODIS数据的处理,MRT和Gdal是两个常用的工具和开发库。pyModis结合了两者,提供了多种处理方式。pyMODIS开发包库包含:downmodis module 、parsemodis module 、convertmodis module、convertmodis_gdal module 、qualitymodis module、optparse_required module 和
optparse_gui module 七个主要模块。
利用python gdal库来转换MODISHDF文件。可以创建GeoTiff文件(或其他gdal支持的文件格式)或者多个带的HDF拼接文件。模块包括三个类和三个函数:
Classes:
Functions:
convertModisGDAL(hdfname, prefix, subset, res, outformat=“GTiff”,
epsg=None, wkt=None, resampl=‘NEAREST_NEIGHBOR’, vrt=False)
利用GDAL库将MODIS数据从hdf格式转换成GDAL格式,可以实现hdf的投影转换、子数据集(波段数据)抽取、格式转换、重采样等功能。
处理主函数,对已选图层(波段)子集进行重投影变换。如果vrt为True,程序会直接调用run_vrt_separated(),且只会处理vrt的第一个子数据集(波段数据)。
针对VRT文件的处理函数,对createMosaicGDAL创建的VRT文件进行重投影变换,对应的createMosaicGDAL类的函数write_vrt的参数separated设置为True。
对MODIS数据进行多幅拼接
from pymodis import convertmodis_gdal
mosaic_g = createMosaicGDAL(self.__hdfs, self.__subset)
if mosaic_g is None:
return False
else:
mosaic_name_list = []
out_name_list = []
for k in list(mosaic_g.file_infos.keys()):
mosaic_names = "{pref}_{band}.vrt".format(pref=self.__mosaic_name, band=k)
out_names = "{pref}_{band}".format(pref=self.__outname, band=k)
mosaic_name_list.append(mosaic_names)
out_name_list.append(out_names)
if mosaic_g.write_vrt(self.__mosaic_name):
self.__mosaic_files = mosaic_name_list
self.__out_names = out_name_list
return True
else:
return False
createMosaicGDAL(hdfnames, subset, outformat=‘HDF4Image’)
利用GDAL拼接MODIS数据从hdf格式到GDAL支持的文件格式。
处理主函数,创建拼接处理过程。
output (st) - 输出文件的名称。
输出MODIS拼接的XML元数据文件。
prefix(str) - 包含元数据的XML文件的名称前缀
输出VRT文件
GDAL文件信息类,该类拷贝自gdal_merge.py
filename(str) - 待读取的文件名称列表
1表示成功,0表示文件无法打开
将此文件映像复制到目标文件中。
这个方法将计算file_info对象文件和目标gdal的重叠区域。对象,并复制用于公共窗口区域的图像数据。假设这些文件在一个相同的投影中。不作检查或纠正。但是,如果目标文件的分辨率不同,或者图像像素类型不同,则会执行适当的重采样和转换(使用常规的GDAL提升/降级规则)。
1代表成功(或者不需要拷贝),0表示失败。
初始化
getResampling(res)
Return the GDAL resampling method
Parameters: res (str) – the string of resampling method
raster_copy(s_fh, s_xoff, s_yoff, s_xsize, s_ysize, s_band_n, t_fh, t_xoff, t_yoff, t_xsize, t_ysize, t_band_n, nodata=None)[source]¶
Copy a band of raster into the output file.
Function copied from gdal_merge.py
raster_copy_with_nodata函数
raster_copy_with_nodata(s_fh, s_xoff, s_yoff, s_xsize, s_ysize, s_band_n, t_fh, t_xoff, t_yoff, t_xsize, t_ysize, t_band_n, nodata)[source]
Copy a band of raster into the output file with nodata values.
Function copied from gdal_merge.py