2016-11-18 6 views
0

2つの問題があります。重心がラスタ上にないグリッドのセルを削除します

問題1: 重心がラスタ上にないグリッドのすべてのセルを削除したいと思います。私は正しい「オブジェクトの種類」(RasterLayer、SpatialPixelsなど)で作業しているかどうかはわかりません。

以下のダミーデータで例を参照してください:

# Load package 
library(raster) 

# Create raster and define coordinate reference system 
ras <- raster(nrows = 100, ncol = 100, xmn = 0, xmx = 100, ymn = 0, ymx = 100) 
proj4string(ras) <- CRS("+init=epsg:32198") 

# Generate random values 
val <- sample(x = 1:100, size = ncell(ras), replace = T) 
values(ras) <- val 

# Create effort grid 
xym <- matrix(c(-30,130,130,-30,-30,-30,130,130), nrow = 4, ncol = 2) 
p <- Polygon(xym) 
ps <- Polygons(list(p), 1) 
sps <- SpatialPolygons(list(ps)) 
proj4string(sps) <- CRS("+init=epsg:32198") 
data <- data.frame(f = 99.9) 
spdf <- SpatialPolygonsDataFrame(sps, data) 
ptsreg <- spsample(spdf, 50, type = "regular") 
grid <- SpatialPixels(ptsreg) 

# Plot raster over grid 
plot(grid) 
plot(ras, add = T) 

問題2:は努力のグリッドを作成するための別の方法はありますか?私のコードは動作しますが、もっと簡単な方法があるとは思いますか?

また、この例では、グリッドを最初にプロットし、ラスタを追加しました。逆の方法(ラスターファーストとグリッドファースト)を行うと、結果のプロットはグリッドの全範囲を表示しません。

enter image description here

どのように私は、ラスタ上のグリッドをプロットするが、それでも全体のグリッドを表示することができますか?例: enter image description here

+0

別々の質問を2つの別々の投稿 – arvi1000

答えて

0

最初の質問では、ここにオプションがあります。試してください:

cont <- as(extent(ras), "SpatialPolygons") 
proj4string(cont) <- CRS("+init=epsg:32198") 
grid.small <- grid[!is.na(grid%over%cont)] 

まず、ラスタの範囲でポリゴンを作成し、%over%関数でグリッドをサブサンプルします。私はそれがあなたが探している結果を与えると思います。あなたの2番目の質問については

、それが最善ではありませんが、試してみてください。

plot(grid) 
plot(ras,add=T) 
plot(grid,add=T) 

シンプルな作品。通常、

plot(ras,ext=extent(grid)) 
plot(grid,add=T) 

は動作するはずですが、そうではありません、私はRのすべてについては、なぜ...

を見つけ出すことができなかった、一つのことを行うための複数の方法が常にあります。私が提案したものを試してみて、あなたの実際のデータで効率的でないなら、それは他の解決策を見つける価値があります。

関連する問題