Вот общий подход, при котором мы строим 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, в полигоны, при желании растворяя соприкасающиеся полигоны.

person
jbaums
schedule
10.02.2015