Хорошо знать, что даже если масштаб / смещение указаны в файле, GDAL не будет автоматически применять их.
В случае Sentinel 2 они указываются не в файле, а в метаданных (xml). Вы можете посмотреть файл xml, который вы используете в своем примере с текстовым редактором. И найдите «QUANTIFICATION_VALUE», как предложено @Val.
Его также можно извлечь из метаданных, проанализированных GDAL. Это можно сделать с помощью dataset.GetMetadata()
, который вернет диктонар. Вы также можете вызвать утилиту gdal.Info
, оба метода показаны ниже.
import gdal
archive = 'S2A_MSIL2A_20200126T082221_N0213_R121_T34HDH_20200126T110103.zip'
# Use a dataset
ds = gdal.Open(archive)
meta = ds.GetMetadata()
ds = None
# Alternatively use gdal.Info
r = gdal.Info(archive, format='json')
meta = r['metadata']['']
Вы можете отфильтровать соответствующие значения и преобразовать их из строки в число с плавающей точкой, например:
{k: float(v) for k,v in meta.items() if k.endswith('_QUANTIFICATION_VALUE')}
# Result in:
{'AOT_QUANTIFICATION_VALUE': 1000.0,
'BOA_QUANTIFICATION_VALUE': 10000.0,
'WVP_QUANTIFICATION_VALUE': 1000.0}