2016-06-28 8 views
1

큰 지오 티프 파일 (4 개의 RGBA 밴드)을 작은 타일로 잘라 내고 싶습니다. 래스터 파일의 기능 brick은 래스터 파일을 읽는 데 사용되고 writeRaster은 디스크에 쓰는 데 사용됩니다. 그러나 이미지 뷰어로 새 파일을 열 수 없습니다. ColorInterp 태그가 누락되어 발생합니다. I이미지 뷰어가 볼 수있는 지오 티프에 래스터 브릭을 저장하십시오.

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

는 old.tif 및 new.tif에서 티파니 태그를 비교. BitsPerSample 태그는 old.tif의 경우 8이고 new.tif의 경우 64입니다. 그래서 나는 0-255으로되어있는 INT1U으로 래스터의 dataType을 업데이트했다.

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

그러나, 64 현재 나의 질문에 여전히 동일한 태그 BitsPerSample 내가 8

PS로 BitsPerSample를 지정하는 방법입니다 :이 코드는 너무

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

작동하지 않습니다 PPS : writeTIFF은 crs 정보없이 볼 수있는 tiff 파일을 생성 할 수 있습니다.

+0

이전 파일과 새 파일의 tiff 태그를 비교하십시오. 새 파일의 BitsPerSample (4 Short)은 64, 64, 64, 64이며 8이어야합니다. – Bangyou

+0

일부 이미지 뷰어는 특히 데이터 유형이 부호가없는 8 비트보다 높은 경우 멀티 밴드 TIFF를 올바르게 해석하지 못합니다. 뭐라구? QGis 또는 유사한 방식으로 열어보십시오. – Benjamin

+0

QGis 및 기타 소프트웨어에서 이미지를 볼 수 있음을 이해합니다. 하지만 원래의 tif 파일은 RGBA이며 모든 이미지 뷰어에서 볼 수 있습니다. 같은 8 비트로 새로운 이미지를 만들고 싶을뿐입니다. – Bangyou

답변

0

GeoTiff를 사용하면 기본 형식에서 벗어나지 않는 한 샘플 당 비트 수를 지정할 필요가 없습니다. 예를 들어, 부울 이미지의 파일 크기를 줄이려면 GDT_Byte (0-255)을 사용하여 샘플 당 2 비트를 지정할 수 있습니다. 다시 읽을 때 GDT_Byte으로 올바르게 해석됩니다 (대부분의 소프트웨어에서).

그러나 데이터가 이미 GDT_Byte (INT1U) 인 경우 샘플 당 비트 수를 지정할 필요가 없습니다. 기본값은 필수 크기입니다. 매개 변수는 "기본값"보다 작은 값을 예상합니다 (예 : 지정된 8 비트 형식의 경우 1 ~ 7 비트, 16 비트 형식의 경우 9 비트 ~ 15 비트).

NBITS 매개 변수에 대한 설명서를 참조하십시오. GeoTiff 이미지는 http://www.gdal.org/frmt_gtiff.html입니다. 또한 BitsPerSample과 같은

writeRaster에 대한 유효한 인수 아니지만,이 options=c("NBITS=n")로, 창조 옵션으로 전달해야한다는, GDAL과 같은 구문은 색상에 관해서 R.

외부 사용 당신이 참조하는 해석 태그, 당신은 옵션에서 지정할 수 있습니다 : options=c("PHOTOMETRIC=RGB"). 알파 채널이있는 경우 "ALPHA=YES"을 추가 할 수 있습니다. 위의 링크에 문서화 된 모든 표준 작성 옵션입니다.