GeoTIFF, зроблені в GDAL, не мають min / max діапазону при завантаженні в Arc / QGIS


11

Я створюю деякі растри з плаваючою комою в GDAL з драйвером GeoTIFF. Коли я завантажую отримані зображення в QGIS або Arc, символіка за замовчуванням ставить мінімум до -0,40282e38, а max до 3,40282e38, тому растр виглядає точно сірим. Чи є спосіб я записати фактичний діапазон безпосередньо в GeoTIFF, щоб після його завантаження в програму GIS він автоматично добре масштабував гістограму? Я спробував створити гістограму за замовчуванням так:

rasterMin, rasterMax = raster.GetRasterBand(1).ComputeRasterMinMax()
raster.GetRasterBand(1).SetDefaultHistogram(rasterMin, rasterMax, 255)

Але я отримую помилку, яка виглядає як обов'язкова проблема:

  File "/usr/lib/python2.6/dist-packages/osgeo/gdal.py", line 846, in SetDefaultHistogram
    return _gdal.Band_SetDefaultHistogram(self, *args)
TypeError: not a sequence

Будь-які пропозиції щодо того, що я міг би зробити, чи якщо я помилився?

Відповіді:


8

Якщо ви генеруєте дані, то ви можете відслідковувати мінімум та максимум на ходу. Якщо ви не маєте прямого контролю над вихідними даними, скажіть, якщо ви збираєте наявні дані, то використання ComputeRasterMinMax(0)нормально.

У будь-якому випадку, після отримання мінімальних і максимальних значень, вам слід зателефонувати SetStatistics()в діапазон і переконатися, що ви встановите свій набір даних, Noneколи закінчите, щоб все записувалося на диск.

Крім того, щось, що я розумію, говорить про те, що використання dataset.GetRasterBand(1).<some band function>не працюватиме належним чином через те, як GDAL Python обробляє посилання на групи. Я не можу пригадати подробиці, але щось було у списку розсилки GDALDev якийсь час тому. Тому краще створити змінну смуги явно:, band = dataset.GetRasterBand(1)а потім зателефонувати band.SetStatistics(min, max, mean, stddev).


Дякую, це зробило трюк, і дякую за контекст. До речі, мені вдалося вкласти посилання на смугу без тимчасової змінної без проблем.
Багатий

Зауважте, що band.ComputeStatistics(0)також зберігається статистика. Це легкий 1-й рядок.
Майк Т

1

Я не знаю, як це зробити за допомогою GDAL, але ви можете використовувати python для виклику інструменту «обчислити статистику» в Arc.


2
Привіт Сайрус, ласкаво просимо на GIS.se :) Хоча правильна відповідь навряд чи приверне голоси з двох причин. Інструмент статистики обчислення аркпії містить статистику у зовнішньому файлі .aux, а плакат запитує "безпосередньо в геотиф". По-друге, хоча Аркгіс згадується у назві, основна частина питання та його теги вказують, що плакат справді більше зацікавлений у рішенні gdal / qgis. У будь-якому випадку, дякую за внесок і будь ласка, продовжуйте це робити. Це трохи кривої навчання, щоб почати, але я думаю, ви з часом виявите, що зусилля окупилися.
matt wilkie
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.