使用 Python 的 GDAL 将 HDF 文件转换为 GeoTiff 文件

问题描述 投票:0回答:0

我想,将名为“MAM35S0.A2008010.0000.002.2008010173218.hdf”(MODIS Aqua产品)的文件转换为GTiff格式。

数据表是“HDF4_EOS:EOS_SWATH:”MAM35S0.A2008010.0000.002.2008010173218.hdf”:mod35:Cloud_Mask”,但是使用API无法正常转换,所以我使用了命令。

from osgeo      import gdal

import numpy                as np
import os
import subprocess

def run(base_dir:str=os.path.dirname(os.path.abspath(__file__)), hdf_file:str=None, src_dataset:str=None, proj=None):
    cmd:str                 = None
    abs_hdf_file:str        = os.path.join(base_dir, hdf_file)
    name, exit              = os.path.splitext(hdf_file)

    geotiff_file:str        = "{0}_temp.tif".format(name)
    abs_geotiff_file:str    = os.path.join(base_dir, geotiff_file)
    
    dataset                 = gdal.Open(abs_hdf_file, gdal.GA_ReadOnly)
    metadata                = dataset.GetMetadata()
    geo_longs:list          = metadata['GRINGPOINTLONGITUDE.1'].split(', ')
    geo_lats:list           = metadata['GRINGPOINTLATITUDE.1'].split(', ')

    upper_long:str        = geo_longs[0]
    upper_lat:str         = geo_lats[0]
    lower_long:str        = geo_longs[3]
    lower_lat:str         = geo_lats[3]
    type:str              = "Int16"  
    if src_dataset is None: src_dataset:str = dataset.GetSubDatasets()[5][0] 

    cmd = "gdal_translate -a_srs EPSG:4326 -ot {type} -b 1 -a_ullr {ulx} {uly} {rlx} {rly} -of GTiff {src_dataset} {dst_dataset} -a_nodata {value}".format(type=type, value=np.nan, ulx=upper_long, uly=upper_lat, rlx=lower_long, rly=lower_lat, src_dataset=src_dataset, dst_dataset=abs_geotiff_file)

    result = subprocess.run(cmd.split(), capture_output=True)            

    dataset = None

if __name__=="__main__" :
    run(hdf_file="MAM35S0.A2008010.0000.002.2008010173218.hdf", src_dataset='HDF4_EOS:EOS_SWATH:"MAM35S0.A2008010.0000.002.2008010173218.hdf":mod35:Cloud_Mask')

不过上传到cesium ion看到结果还是很惊喜

图像左右颠倒投影。如果有人对这种现象有经验或知识,请帮忙!

我还考虑通过复制 gdal_translate 命令来添加 gcp 信息。

但是还是不行,我怀疑是投影的问题,所以尝试了几种不同的投影,还是没有成功。

我想把MODIS传感器的HDF文件转换成GeoTiff,这样就可以像铯离子一样正常投影到GIS上了

python gdal projection geotiff hdf
© www.soinside.com 2019 - 2024. All rights reserved.