2014-05-21 2 views
0

나는 함께 작업 할 여러지도가 있습니다. 지도에서 값 (1, 0 및 NA)을 추출하여 요약 행렬에 모두 배치하려고합니다. 지도가 너무 많아서 for 루프로 사용하는 것이 가장 좋습니다. DATASET here지도에서 값을 추출하고 요약 테이블에 삽입

setwd ('C:/Users/Israel/Dropbox/') 
require (raster) 
require(rgdal) 
require (plyr) 

#load in the emxpy matrix to be filled 
range.summary<-read.csv('range_sizes.csv', header=T) 

#load in maps and count pixels 
G1.total<-raster('Group1/Summary/PA_current_G1.tif') 
G1.total.df<-as.data.frame(G1.total) 

#these are the values I need to be placed into the empty matrix (range.summary) 
count (G1.total.df) 

    PA_current_G1 freq 
1    0 227193 
2    1 136871 
3   NA 561188 
+0

"추출물"이란 무슨 뜻인지는 분명치 않습니다. 1, 0 및 NA의 발생을 요약 (표)하거나 특정 지역 (점선? 다각형?)에 대해 추출하는 데 관심이 있습니까? –

+0

@Paulo Cardoso 각 맵에 대한 요약 테이블이 필요하며 해당 테이블의 값은'range.summary' 파일에 저장됩니다 –

답변

0

이이

내가 그것을 지금 3 개 이미지

library(raster) 
wd <- 'D:\\Programacao\\R\\Stackoverflow\\raster' 
allfiles <- list.files(file.path(wd), all.files = F) 
# List of TIF files at dir.fun folder 
tifs <- grep(".tif$", allfiles, ignore.case = TRUE, value = TRUE) 
#stack rasterLayer 
mystack <- stack(file.path(wd, tifs)) 
# calculate frequencies 
freqs <- freq(mystack, useNA='ifany') 
# rbind list to get a data.frame 
freqsdf <- do.call(rbind.data.frame, freqs) 
freqsdf 
        value count 
PA_2050_26_G1.1   0 256157 
PA_2050_26_G1.2   1 193942 
PA_2050_26_G1.3  NA 475153 
PA_2050_26_G2.1   0 350928 
PA_2050_26_G2.2   1 99171 
PA_2050_26_G2.3  NA 475153 
PA_2050_26_sub_G1.1  0 112528 
PA_2050_26_sub_G1.2  1 90800 
PA_2050_26_sub_G1.3 NA 721924 

str(freqsdf) 
'data.frame': 9 obs. of 2 variables: 
$ value: num 0 1 NA 0 1 NA 0 1 NA 
$ count: num 256157 193942 475153 350928 99171 ... 

를 다운로드하십시오 : 이것은 내가 지금까지 내지도와 빈 요약 매트릭스가 여기 내 드롭 박스에 업로드 한 코드 작업의 문제 출력 모양.