我想概述給定單元格編號的柵格單元格。我做了一個簡單的例子,我可以在功率點上做出來,但是可能有一個解決方案,對於720 x 360 vs 3 x 5這樣做會更困難。 要生成樣本數據:根據單元格編寫一個感興趣的柵格單元格
library(raster)
x = raster(matrix(seq(1,15), nrow = 3))
plot(x)
而且我想的修改的繪圖命令(優選地),使得如果我來選擇第五細胞,結果看起來是這樣的:
我想概述給定單元格編號的柵格單元格。我做了一個簡單的例子,我可以在功率點上做出來,但是可能有一個解決方案,對於720 x 360 vs 3 x 5這樣做會更困難。 要生成樣本數據:根據單元格編寫一個感興趣的柵格單元格
library(raster)
x = raster(matrix(seq(1,15), nrow = 3))
plot(x)
而且我想的修改的繪圖命令(優選地),使得如果我來選擇第五細胞,結果看起來是這樣的:
這裏有一個通用的方法,在這裏我們基於感興趣的單元格的行和列繪製的extent
。
library(raster)
r <- raster(matrix(1:15, nrow=3))
plot(r)
rc <- rowColFromCell(r, 5)
plot(extent(r, rc[1], rc[1], rc[2], rc[2]), add=TRUE, col='red', lwd=3)
到第四參數的第二至extent
確定行(參數2和3)和列(參數4和5)將要用於計算的程度的跨度。
如果我們想勾勒細胞3,4,8,9,我們可以這樣做:
plot(r)
rc <- rowColFromCell(r, c(3, 4, 8, 9))
plot(extent(r, min(rc[, 1]), max(rc[, 1]),
min(rc[, 2]), max(rc[, 2])), add=TRUE, col='red', lwd=3)
這工作正常周邊相鄰的單元組的矩形範圍。如果你想概述任意選擇的單元格,你可以考慮rasterToPolygons
。例如。爲電池單元2,8,9,11,和14:
plot(r)
r2 <- r
r2[setdiff(seq_len(ncell(r2)), c(2, 8, 9, 11, 14))] <- NA
r2[!is.na(r2)] <- 1
plot(rasterToPolygons(r2, dissolve=TRUE), add=TRUE, border='red', lwd=2)
在這裏,我們創建然後焦點細胞光柵的一個副本,所有其他細胞設定爲NA
,以及共同的值(1
, 在這種情況下)。 rasterToPolygons
然後將非NA細胞轉換成多邊形,如果需要,溶解接觸多邊形。
這段代碼應該做你想做的。
plot(raster(matrix(seq(1,15), nrow = 3)))
gridx = 5
gridy = 3
dx = 1/gridx #resolution of the grid
dy = 1/gridy
# if you want to specify the cell number (cell 1 is bottom left):
cell = 15
ny = floor(cell/gridx - dx)+1
nx = cell-gridx*(ny-1)
# if you want to give cell positions, just edit nx, ny
x1 = c(nx-1,nx-1,nx-1,nx)*dx
y1 = c(ny-1,ny,ny-1,ny-1)*dy
x2 = c(nx,nx,nx-1,nx)*dx
y2 = c(ny-1,ny,ny,ny)*dy
segments(x1,y1,x2,y2,col=2,lwd=2)
謝謝 - 並不完全做到這一點通過手機號碼 - 但很容易的找出該行和col(nx和ny)給出的單元格數值。 – Sarah 2015-02-08 22:51:29
編輯要通過單元格編號 – xraynaud 2015-02-09 07:49:06