Eu regularmente crio meus próprios rasters GeoTIFF com GDAL em Python, por exemplo:
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
no entanto, quando o resultado é visualizado no ArcCatalog / ArcGIS, ele parece preto ou cinza, pois não possui estatísticas. Isso é resolvido clicando com o botão direito do mouse na varredura e escolhendo "Calcular Estatísticas ..." no ArcCatalog (existem várias outras maneiras de fazer isso) ou usando gdalinfo em um prompt de comando:
gdalinfo -stats MyRaster.tif
irá gerar MyRaster.tif.aux.xml
, que é usado pelo ArcGIS para dimensionar adequadamente a varredura. O arquivo PAM (Metadados Auxiliares Persistentes) contém as estatísticas, principalmente os valores mínimo e máximo:
<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>
Minha pergunta: existe uma maneira interna de fazer com que o GDAL crie um arquivo de estatísticas (além de usar o gdalinfo -stats
comando)? Ou preciso escrever o meu?
fonte
band.GetStatistics(0,1)
ele realmente calcula as estatísticas e as adiciona aos metadados GeoTIFF no arquivo único. Nenhum outro arquivo é necessário. No entanto, a partir dos testes com os produtos Esri, ele funciona apenas com o ArcGIS 10.0 e superior, não com o ArcGIS 9.3 ou anterior.Se as estatísticas já estiverem calculadas e incluídas no arquivo internamente, você
gdalinfo -stats
não criará um arquivo de estatísticas adicionais do PAM (.aux.xml) para usar o GDAL 2.1.0. Mas é muito fácil implementar o .xml para você. Aqui estão alguns módulos Python internos explicados para fazer isso. Para mim, usei a API XML do ElementTree com o código abaixo:O resultado se parece com:
fonte