2012-03-03 5 views
0

기존 래스터의 몇 가지 값만 포함하는 새로운 래스터 개체를 만들려고했습니다. 여기 래스터 래스터를 사용하고 있습니다 : https://www.ga.gov.au/products/servlet/controller?event=FILE_SELECTION&catno=71071.속성에 의한 래스터 추출 R

class  : RasterLayer dimensions : 14902, 19161, 285537222 (nrow, ncol, ncell) 
resolution : 0.002349, 0.002349 (x, y) 
extent  : 110, 155.0092, -45.0048, -9.999999 (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
values  : G:\Spatial data\environmental_layers\Australian data\Land cover\Class\DLCDv1_Class.tif 
min value : 1 
max value : 34 

나는 시도했다 :

pr <- rasterToPoints(r) # but the file is to big 

s <- r[r>30 & r<33] # but the file is to big 

과 특성을 가진 래스터 생산

rc <- reclass(r, c(-Inf,30,NA, 31,32, 1, 33,Inf,NA)) 

:

class  : RasterLayer 
dimensions : 14902, 19161, 285537222 (nrow, ncol, ncell) 
resolution : 0.002349, 0.002349 (x, y) 
extent  : 110, 155.0092, -45.0048, -9.999999 (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
values  : C:\Users\Adam\AppData\Local\Temp\R_raster_tmp\raster_tmp_61931056968.grd 
min value : 1 
max value : 33 

이것은 NA와 1의 값을 가진 래스터 레이어를 만들지 만 33 개의 값이 있다고 생각했습니다. 나는 큰 파일에서 R을 사용하여 '속성으로 추출'하는 방법을 찾기 위해 고심하고있다. 아무도 내가 이것을 할 수있는 방법에 대한 제안을 가지고 있습니까?

+0

래스터가 너무 커서 메모리에 맞지 않는 것처럼 들립니다. 래스터를 청크로 처리해야 할 수도 있습니다. 이를 수행하는 방법에 대한 조언은 http://cran.r-project.org/web/packages/raster/vignettes/functions.pdf에있는 패키지와 함께 배포되는 비 네트에서 제공됩니다. – digitalmaps

답변

2

reclassify()은 매우 큰 래스터에서 작동하지만 "is" "become"행렬을 올바르게 지정해야합니다. 비록 당신이 "래스터 추출물"이라고 말할 때 이것이 실제로 당신의 목표인지는 귀하의 질문에서 확실하지 않습니다.) (그러나 나는 그 재 분류 믿고,

## Create sample raster with values from 0 to 9 
r <- raster(nrow=100, ncol=100) 
r[] <- trunc(runif(ncell(r))*10) 

## Create reclassification table 
## Set values 0 to 4 equal to 1 
## Set values 5 to 9 equal to NA 

isBecomes <- cbind(c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), 
        c(1, 1, 1, 1, 1, NA, NA, NA, NA, NA)) 

r2 <- reclassify(r, rcl=isBecomes) 

I 메모리에 맞게 너무 큰 래스터이 테스트되지 않은 : 예를 들어

:

그러나, 여기에 재 분류를 수행하는 방법이다 이 문제를 처리 할 수 ​​있습니다.

+0

감사합니다. Paul, 완벽하게 작동했습니다. 평범한 질문에 대해 미안하지만, 아직도 비 네트의 것들에 대해 혼란스러워합니다. 그러나 여기에있는 사람들의 도움으로 천천히 물건을 집어 들고 있습니다. 도움에 대한 건배, 많이 감사합니다. – Adam

+1

나는 rc <- reclassify (r, c (-Inf, 30, NA, 30,32, 1, 32, Inf, NA))이어야한다고 생각한다. – RobertH

관련 문제