2013-02-15 6 views
3

여러 래스터 파일을 조작하고 다시 쓰고 싶습니다.래스터를 쌓은 후 쓰는 방법은 무엇입니까?

rasterfiles <- list.files("C:\\data", "*.envi", full.names = TRUE) 
d1 <- overlay(stack(rasterfiles), 
       fun=function(x) movingFun(x, fun=mean, n=3, na.rm=TRUE)) 
d2=unstack(d1) 

d1는 래스터의 목록을 하나의 래스터이며,하지 이후 우리가

+0

당신은 writeFormats''에 언급 된 형식 중 하나를 시도 할 수 있었다?. –

+0

난 그냥 더미 예제로 의미가 있었던 것 같아요하지만 정수로 시작하는 이름과 변수를 호출 할 수 없습니다, 그것은''10rasterfiles "'에 예기치 않은 기호를 던질 것입니다. – plannapus

답변

5
writeRaster(d1, file="d1.nc") #other file formats such as .envi work as well 

작품을 d2 (래스터)를 작성하는 방법 나는 아무 생각에 감사 : 실제로 overlay의 결과가 하나 하나가 래스터 (?overlay 참조).
또한 stack의 개념은 정확하게 하나의 레이어를 가진 여러 래스터를 가져 와서 여러 레이어가있는 하나의 래스터를 생성하는 것입니다.
결국 각 레이어를 별도로 저장하려는 경우 쓰기 전에 래스터를 unstack 수 있습니다.
는 경우 :

d2 <- unstack(d1) 
outputnames <- paste(seq_along(d2), ".nc",sep="") 
for(i in seq_along(d2)){writeRaster(d2[[i]], file=outputnames[i])} 
+1

'overlay'의 결과는 하나의 단일 래스터입니다 :'? overlay'를보세요. 또한 래스터를 여러 개 겹쳐 놓은 것입니다. 즉, 여러 래스터에서 단일 레이어를 사용하면 하나의 래스터를 여러 레이어로 만들 수 있습니다. – plannapus

+0

plannapus - 답안에 의견을 포함시켜야합니다. 그게 중요한 포인트 야, 내 생각 엔 :-) –

+0

@CarlWitthoft 네 말이 맞아. 이제 끝났어. – plannapus

5

Plannapus 솔루션은 작동합니다. 또는, 당신도 한 번에 하나의 파일에 기록 할 수 있습니다 :

rasterfiles <- list.files("C:\\data", "*.envi", full.names = TRUE) 
d1 <- overlay(stack(rasterfiles), 
      fun=function(x) movingFun(x, fun=mean, n=3, na.rm=TRUE), 
      filename='output.tif') 

또는 여러 개의 파일에

두 가지의 단계

rasterfiles <- list.files("C:\\data", "*.envi", full.names = TRUE) 
d1 <- overlay(stack(rasterfiles), 
      fun=function(x) movingFun(x, fun=mean, n=3, na.rm=TRUE)) 
d2 <- writeRaster(d1, 'out.tif', bylayer=TRUE)