Answers:
这是示例代码。使此代码适应循环处理所有栅格的工作非常简单。如果栅格共享共同的范围和分辨率,则可以创建栅格堆栈并遍历堆栈中的各个波段。要创建包含目录中所有栅格的特定格式的矢量,可以使用“ 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)
知道哪个多边形要分配哪个值?
将shapefile读入SpatialPolygonsDataFrame
(readOGR
来自包的函数rgdal
)
将栅格读入Raster
对象(raster
来自包的函数raster
)
使用extract(raster, spdf)
让每个多边形下的网格单元。然后mean
在它们上运行。
重复您的一组光栅图像...