Я регулярно создаю свои собственные растры GeoTIFF с помощью GDAL на Python, например:
from osgeo import gdal
from numpy import random
data = random.uniform(0, 10, (300, 200))
driver = gdal.GetDriverByName('GTiff')
ds = driver.Create('MyRaster.tif', 200, 300)
band = ds.GetRasterBand(1)
band.WriteArray(data)
ds = band = None # save, close
однако, когда результат просматривается с помощью ArcCatalog / ArcGIS, он выглядит либо черным, либо серым, поскольку не имеет статистики. Это можно решить либо щелкнув правой кнопкой мыши по растру и выбрав «Рассчитать статистику ...» в ArcCatalog (есть несколько других способов сделать это), либо используя gdalinfo в командной строке:
gdalinfo -stats MyRaster.tif
будет сгенерирован MyRaster.tif.aux.xml
, который используется ArcGIS для правильного масштабирования растра. Файл PAM (постоянные вспомогательные метаданные) содержит статистику, в частности минимальные и максимальные значения:
<PAMDataset>
<PAMRasterBand band="1">
<Metadata>
<MDI key="STATISTICS_MINIMUM">0</MDI>
<MDI key="STATISTICS_MAXIMUM">10</MDI>
<MDI key="STATISTICS_MEAN">5.0189833333333</MDI>
<MDI key="STATISTICS_STDDEV">2.9131294111984</MDI>
</Metadata>
</PAMRasterBand>
</PAMDataset>
Мой вопрос: есть ли встроенный способ получения GDAL для создания файла статистики (кроме использования gdalinfo -stats
команды)? Или мне нужно написать свое?
источник
band.GetStatistics(0,1)
самом деле вычислит статистику и добавит ее в метаданные GeoTIFF в одном файле. Никаких других файлов не требуется. Однако после тестирования с продуктами Esri он работает только с ArcGIS 10.0 и выше, но не с ArcGIS 9.3 или более ранней.Если статистика уже рассчитана и включена в файл внутри, не
gdalinfo -stats
создавайте дополнительный файл статистики PAM (.aux.xml) для использования GDAL 2.1.0. Но очень легко реализовать .xml для себя. Вот несколько встроенных модулей Python, описанных для этого. Для себя я использовал ElementTree XML API с кодом ниже:Результат выглядит так:
источник