求助:Python GDAL转换MODIS HDF为GeoTiff时影像左右翻转
问题:MODIS Aqua HDF转GeoTIFF后在Cesium Ion中左右翻转的解决方法
我需要将MODIS Aqua产品的HDF文件MAM35S0.A2008010.0000.002.2008010173218.hdf转换为GeoTIFF格式,指定子数据集为HDF4_EOS:EOS_SWATH:"MAM35S0.A2008010.0000.002.2008010173218.hdf":mod35:Cloud_Mask。因API无法正常转换,我采用Python调用gdal_translate命令实现转换,代码如下:
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, ext = 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')
转换后的GeoTIFF文件上传至Cesium Ion后,影像出现左右翻转的异常情况。我尝试添加GCP信息、更换多种投影,但均未解决问题。现寻求正确的转换方法,实现MODIS HDF文件到GeoTIFF的正常转换,使其可在Cesium Ion等GIS平台正确投影。
内容的提问来源于stack exchange,提问作者ZEESEN
相关产品推荐
相关产品推荐

