Сохраните растровый блок в геотиф, который можно просмотреть программой просмотра изображений.

Я хочу обрезать свои большие файлы geotiff (4 полосы RGBA) на плитки меньшего размера. Функция brick в растровом пакете используется для чтения растрового файла, а writeRaster — для записи на диск. Однако я не могу открыть новый файл с помощью средства просмотра изображений. Это вызвано отсутствием тегов ColorInterp. я

a <- brick(old.tif)
writeRaster(a, filename = new.tif)

Сравните тег tiff в old.tif и new.tif. Тег BitsPerSample равен 8 для old.tif и 64 для new.tif. Поэтому я обновил тип данных в растре на INT1U, который должен был быть 0-255.

 dataType(a) <- 'INT1U'
 writeRaster(a, filename = new.tif, dataType = 'INT1U')

Однако тег BitsPerSample по-прежнему равен 64. Мой текущий вопрос заключается в том, как мне указать BitsPerSample в 8.

PS: этот код тоже не работает

writeRaster(a, filename = new.tif, dataType = 'INT1U', BitsPerSample = 8)

PPS: writeTIFF может генерировать видимый файл tiff без информации crs.


person Bangyou    schedule 28.06.2016    source источник
comment
Сравните тег tiff из старого и нового файла. В новом файле BitsPerSample (4 Short): 64, 64, 64, 64, должно быть 8.   -  person Bangyou    schedule 29.06.2016
comment
Некоторые средства просмотра изображений неправильно интерпретируют многоканальные файлы TIFF, особенно когда тип данных превышает 8-битный без знака. Что вы используете? Попробуйте открыть его в QGis или подобном.   -  person Benjamin    schedule 30.06.2016
comment
Я так понимаю, изображение можно посмотреть в QGis и другом софте. Но мой исходный файл tif имеет формат RGBA и может быть просмотрен любым средством просмотра изображений. Просто хочу создавать новые образы с такими же 8-битными.   -  person Bangyou    schedule 01.07.2016


Ответы (1)


С GeoTiff вам не нужно указывать количество битов на выборку, если вы не хотите отклоняться от базового формата. Например, вы можете указать 2 бита на выборку с помощью GDT_Byte (0-255), чтобы уменьшить размер файла для логического изображения. Когда он будет прочитан обратно, он будет правильно интерпретирован как GDT_Byte (большинством программ).

Однако, если ваши данные уже GDT_Byte (INT1U), нет необходимости указывать количество битов на выборку, по умолчанию будет установлен требуемый размер; параметр ожидает значения меньше, чем «по умолчанию», например: от 1 до 7 бит для указанного 8-битного формата, от 9 до 15 бит для 16-битного формата и т. д.

См. документацию по параметру NBITS для изображений GeoTiff здесь: http://www.gdal.org/frmt_gtiff. HTML.

Также похоже, что BitsPerSample не является допустимым аргументом для writeRaster, но его следует передать как параметр создания, как options=c("NBITS=n"), тот же синтаксис, который GDAL использует за пределами R.

Что касается тега интерпретации цвета, на который вы ссылаетесь, вы можете указать его в опциях: options=c("PHOTOMETRIC=RGB"). Если есть альфа-канал, можно добавить "ALPHA=YES". Это все стандартные варианты создания, описанные по ссылке выше.

person Benjamin    schedule 08.02.2017