Відповіді:
Ось приклад коду. Досить прямо вперед адаптувати цей код для роботи в циклі для обробки всіх ваших растрових файлів. Якщо ваші растри мають загальну міру та роздільну здатність, ви можете створити растровий стек і провести цикл через смуги в стеку. Щоб створити вектор, що містить усі растри в каталозі, у певному форматі ви можете використовувати "list.files", а потім передати цей вектор у стек.
Приклад:
rlist=list.files(getwd(), pattern="img$", full.names=TRUE)
r <- stack(rlist)
# Add required libraries
require(raster)
require(sp)
require(rgdal)
# Set working directory, raster, in and out shapefiles
setwd("C:/test")
inshp="MyPolys"
outshp="PolyMeans"
rdata <- "Year2012.img"
# Read polygon feature class shapefile
sdata <- readOGR(dsn=getwd(), layer=inshp)
# Read raster
r <- raster(rdata)
# Extract raster values to list object
r.vals <- extract(r, sdata)
# Use list apply to calculate mean for each polygon
r.mean <- lapply(r.vals, FUN=mean)
# Join mean values to polygon data
sdata@data <- data.frame(sdata@data, m2012=r.mean)
# Write results
writeOGR(sdata, getwd(), outshp, driver="ESRI Shapefile", check_exists=TRUE,
overwrite_layer=TRUE)
data.frame(sdata@data, m2012=r.mean)
знати, якому багатокутнику призначити, яке значення?
Прочитайте файл форми SpatialPolygonsDataFrame
( readOGR
функція з пакета rgdal
)
Прочитайте растр в Raster
об'єкт ( raster
функція з пакета raster
)
Використовуйте extract(raster, spdf)
для отримання комірок сітки під кожним багатокутником. Потім біжи mean
по них.
Повторіть набір растрових зображень ...