2016-06-28 17 views
1

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

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

Сравните Tiff тег в old.tif и new.tif. Тег BitsPerSample равен 8 для old.tif и 64 для new.tif. Поэтому я обновил dataType в растровом виде до 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.

+0

Сравните тег tiff из старого и нового файла. Новый файл имеет BitsPerSample (4 Short): 64, 64, 64, 64, который должен быть 8. – Bangyou

+0

Некоторые зрители изображений неправильно интерпретируют многополосные TIFF, особенно если тип данных выше 8-битного без знака. Что вы используете? Попробуйте открыть его в QGis или аналогичном. – Benjamin

+0

Я понимаю, что изображение можно посмотреть в QGis и другом программном обеспечении. Но мой оригинальный файл tif - RGBA и может быть просмотрен любым зрителем изображений. Просто хочу создавать новые изображения с тем же 8-битным. – Bangyou

ответ

0

С 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". Все это стандартные варианты создания, описанные в ссылке выше.