python 您所在的位置:网站首页 gdalwrap python

python

#python| 来源: 网络整理| 查看: 265

Я хочу преобразовать файл с именем «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')

Это результат загрузки файла GTiff, преобразованного с использованием приведенного выше кода в ион цезия.

Однако я был удивлен, увидев результаты, загрузив результаты на ион цезия.

Изображение проецировалось перевернутым влево и вправо. Если у кого-то есть опыт или знания об этом явлении, пожалуйста, помогите!

Я также рассматривал возможность добавления информации gcp путем дублирования команды gdal_translate.

Но это не сработало, я подозревал, что проблема в проекции, поэтому я попробовал несколько разных проекций, но безуспешно.

Я хочу преобразовать HDF-файл датчика MODIS в GeoTiff, чтобы его можно было нормально проецировать на ГИС, например, на ион цезия.

python gdal projection geotiff hdf 0 ZEESEN 13 Мар 2023 в 10:25 1 ответ

Данные о полосе не привязаны к координатной сетке, для этого нельзя использовать gdal_translate. Вы можете либо использовать GCP в метаданных (например, с помощью gdalwarp), либо загрузить сопутствующие данные геолокации и использовать их.

Дело не только в том, что ваши данные перевернуты по горизонтали, посмотрите например вверху возле Крыма, это тоже большой сдвиг. Использование -a_ullr отменяет фактическую геолокацию, поэтому ее следует использовать с осторожностью.

Использование GCP с gdalwarp может быть выполнено, например, с помощью:

gdalwarp -t_srs EPSG:4326 -tr 0.01 0.01 -te 25.8 28.4 33.7 46.9 HDF4_EOS:EOS_SWATH:"MAM35S0.A2008010.0000.002.2008010173218.hdf":mod35:Cloud_Mask cloudmask.tif

В конце концов вам придется решить, как будет выглядеть сетка вывода/цели, это всего лишь предположение.

Если вы собираетесь вызывать его из Python, я бы рекомендовал использовать интерфейс Python, поэтому gdal.Translate или gdal.Warp и т. д. Но это не должно влиять на результат.

Вот краткий обзор вывода, наложенного на Карты Google с помощью QGIS:

enter image description here

0 Rutger Kassies 13 Мар 2023 в 12:01


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有