python_MODIS HDF数据转为tif并拼接图像

本文介绍了如何使用Python将MODIS的HDF数据转换为TIFF格式,并进一步进行图像拼接。首先,转换HDF数据格式,接着获取每个HDF/TIFF文件的日期信息,生成列表以便后续比较。最终,通过处理这些TIFF文件,完成图像的拼接操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先是转换格式,原始hdf数据是这样

# -*- coding:utf-8 -*-
import os
import arcpy
from arcpy import env

sourceDir=u'E:' #中文路径 输入
targetDir=u'E:' #英文路径 输出

arcpy.CheckOutExtension("Spatial")
env.workspace = sourceDir
arcpy.env.scratchWorkspace = sourceDir
hdfList = arcpy.ListRasters('*','hdf')
for hdf in hdfList:
    print hdf
    eviName=os.path.basename(hdf).replace('hdf','tif')
    outname=targetDir+'\\'+eviName
    print outname
    data1=arcpy.ExtractSubDataset_management(hdf,outname, "Eight_Day_Snow_Cover") #Eight_Day_Snow_Cover是子数据集名称
##	
print 'all done'

接下来是获取每个HDF/TIF 年内天数数据,生成列表或文件,以方便后期判断合成日期是否一致

import os
import glob
import pandas as
### 使用 PyModis 处理 HDF 文件的拼接 PyModis 是一个用于处理 MODIS 数据Python 库[^1]。为了实现 HDF 文件的拼接,通常需要先将 HDF 文件转换为其他更易于操作的格式(如 GeoTIFF),然后再进行拼接。 以下是具体的操作方法: #### 安装依赖库 首先确保安装了必要的库: ```bash pip install pymodis gdal numpy ``` #### 转换 HDFTIFF 可以利用 `gdal` 工具来完成这一过程。下面是一个简单的脚本例子展示如何批量转换 HDFTIFF 保存文件名: ```python import os from osgeo import gdal def hdf_to_tif(hdf_file, output_dir): dataset = gdal.Open(hdf_file) subdatasets = dataset.GetSubDatasets() for i, subdataset in enumerate(subdatasets): eviName = os.path.basename(hdf_file).replace('.hdf', f'_{i}.tif') out_path = os.path.join(output_dir, eviName) command = f"gdal_translate -of GTiff {subdataset[0]} {out_path}" os.system(command) # 示例调用函数 input_hdfs = ["path/to/hdf/file.hdf"] # 替换成实际路径列表 output_directory = "path/to/output/directory" for hdf in input_hdfs: hdf_to_tif(hdf, output_directory) ``` 这段代码会遍历给定目录下的所有 HDF 文件,将其子数据集逐一导出成独立的 TIFF 文件[^2]。 #### 拼接多个 TIFF 图像 一旦获得了单个场景对应的多张 TIFF 图片之后,则可以通过如下方式来进行镶嵌合成工作: ```python import glob from osgeo import gdal def mosaic_tifs(tif_files, output_mosaic): vrt_options = gdal.BuildVRTOptions(resampleAlg='nearest') vrt_ds = gdal.BuildVRT('', tif_files, options=vrt_options) translate_options = gdal.TranslateOptions(format="GTiff", creationOptions=["COMPRESS=LZW"]) gdal.Translate(output_mosaic, vrt_ds, options=translate_options) # 获取所有的TIF文件 all_tifs = sorted(glob.glob(os.path.join(output_directory, "*.tif"))) mosaic_output = "final_mosaic.tif" mosaic_tifs(all_tifs, mosaic_output) ``` 上述代码片段展示了怎样读取指定文件夹内的全部 TIFF 文件创建最终的大图输出。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值