pyModis开发(一)convertmodis_gdal module模块

7 篇文章 0 订阅
6 篇文章 0 订阅

pyModis开发(一)convertmodis_gdal module模块

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 七个主要模块。

convertmodis_gdal module模块

  利用python gdal库来转换MODISHDF文件。可以创建GeoTiff文件(或其他gdal支持的文件格式)或者多个带的HDF拼接文件。模块包括三个类和三个函数:
Classes:

  • file_info
  • createMosaicGDAL
  • convertModisGDAL

Functions:

  • getResampling()
  • raster_copy()
  • raster_copy_with_nodata()

convertModisGDAL类

 convertModisGDAL(hdfname, prefix, subset, res, outformat=“GTiff”,
epsg=None, wkt=None, resampl=‘NEAREST_NEIGHBOR’, vrt=False)
  利用GDAL库将MODIS数据从hdf格式转换成GDAL格式,可以实现hdf的投影转换、子数据集(波段数据)抽取、格式转换、重采样等功能。

参数
  • hdfname (str) – 输入数据的文件路径列表,list。
  • prefix (str) – 输出数据的前缀
  • subset (str) – 子数据集或者波段数据,可以是"(0 1 1)"类似的字符串(支持的字符串格式还包括:‘011’,'0,1,1’等等),也可以是0,1,1的列表,0表示不需要处理,1表示处理。如果设为None,则表示对整个数据集里所有子集进行处理。
  • res (int) – 输出分辨率,如果设置为0,则采用源数据的分辨率。
  • outformat (str) – 输出格式字符串, GDAL支持的格式都可以,默认“GTiff“。
  • epsg (int) – 输出文件投影的EPSG编码。
  • wkt (str) – 输出文件投影的WKT字符串。
  • resampl (str) – 重采样类型,默认为’NEAREST_NEIGHBOR’,支持的重采样类型还包括:‘AVERAGE’, ‘BILINEAR’, ‘CUBIC’, ‘CUBIC_SPLINE’, ‘LANCZOS’,‘MODE’。
  • vrt (bool) – 输入文件是否为通过createMosaicGDAL创建的GDAL VRT 文件,True为使用VRT文件,False为不使用VRT。注意,使用vrt时,只处理第一个子数据集(波段数据)。当需要处理VRT中的多个波段或子数据集时,该操作无效。
主要函数
run(quiet=False)

  处理主函数,对已选图层(波段)子集进行重投影变换。如果vrt为True,程序会直接调用run_vrt_separated(),且只会处理vrt的第一个子数据集(波段数据)。

run_vrt_separated()

  针对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类

 createMosaicGDAL(hdfnames, subset, outformat=‘HDF4Image’)
  利用GDAL拼接MODIS数据从hdf格式到GDAL支持的文件格式。

参数:
  • hdfnames (list) – 待拼接的文件路径列表
  • subset (str) – 待拼接的子集或波段数据,可以是"(0 1 1)"类似的字符串(支持的字符串格式还包括:‘011’,'0,1,1’等等),也可以是0,1,1的列表,0表示不需要处理,1表示处理。如果设为None,则表示对整个数据集里所有子集进行处理。
  • outformat (str) – 输出格式字符串,支持的格式包括:HDF4Image、GTiff、HFA,不支持VRT文件输出。
主要函数
run(output, quiet=False)

  处理主函数,创建拼接处理过程。

参数

output (st) - 输出文件的名称。

write_mosaic_xml(prefix)

  输出MODIS拼接的XML元数据文件。

参数

  prefix(str) - 包含元数据的XML文件的名称前缀

write_vrt(output, separate=True, quiet=False)

  输出VRT文件

参数
  • output(str) - 输出文件的前缀
  • separate(bool) - 是否为各个波段各自输出一个VRT文件,True表示为每个波段输出一个VRT文件,False表示输出到一个文件。

file_info类

  GDAL文件信息类,该类拷贝自gdal_merge.py

参数

filename(str) - 待读取的文件名称列表

返回值

   1表示成功,0表示文件无法打开

主要函数
copy_into(t_fh, s_band=1, t_band=1, nodata_arg=None)

  将此文件映像复制到目标文件中。
这个方法将计算file_info对象文件和目标gdal的重叠区域。对象,并复制用于公共窗口区域的图像数据。假设这些文件在一个相同的投影中。不作检查或纠正。但是,如果目标文件的分辨率不同,或者图像像素类型不同,则会执行适当的重采样和转换(使用常规的GDAL提升/降级规则)。

参数
  • t_fh – gdal.Dataset object for the file into which some or all of this file may be copied.
  • s_band –
  • t_band –
  • nodata_arg –
返回值

  1代表成功(或者不需要拷贝),0表示失败。

init_from_name(filename)

  初始化

getResampling(res)函数

getResampling(res)
Return the GDAL resampling method

Parameters: res (str) – the string of resampling method

raster_copy函数

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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值