2012-03-03 14 views
0

私は、既存のラスタからの2つの値だけを含む新しいラスタオブジェクトを作成しようとしていました。 ここで見つけたクラスラスタを使用しています: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) 

私がメモリに収まるには大きすぎるラスタでこれをテストしていません:たとえば

しかし、ここで再分類を行う方法でありますこれを処理できる可能性があります。

+0

ありがとうポール、それは完璧に働いています。日常的な質問には申し訳ありませんが、私はまだビネットのものについて混乱しますが、ここにいる人々の助けを借りて物事をゆっくりと拾い上げています。助けを応援、その多くの感謝。 – Adam

+1

私はそれがrc < - reclassify(r、c(-Inf、30、NA、30,32,132、Inf、NA))であるべきだと思います。 – RobertH

関連する問題