我有125个唯一多边形的多边形sf对象(代表分散在美国各州的不同区域)。没有一个多边形共享边界。我还具有状态为30m的山形阴影数字高程模型栅格图像,该图像覆盖了多边形的区域(然后是某些区域)。我想使用栅格数据包中的terrain函数来计算每个多边形的唯一坡度和纵横比。我的最终产品将是使多边形sf对象具有两个新列,即坡度和纵横比,因此每个多边形将具有其坡度和纵横比。
我已经在原始的全州范围的栅格图像和仅包含多边形区域的蒙版栅格图像上使用了地形功能,该函数会返回整个栅格图像的最小和最大斜率以及纵横比。
除此之外,我对如何获取为每个唯一多边形的区域计算出的坡度和纵横比,然后将这些数据输入到多边形sf对象中的工作非常困惑。如果有人有任何建议,我很乐意听到。
谢谢!
答案 0 :(得分:1)
示例数据
library(raster)
elevation <- getData('alt', country='CHE')
x <- terrain(elevation, opt=c('slope', 'aspect'), unit='degrees')
解决方案
sw <- getData("GADM", country="CHE", level=1)
e <- extract(x, sw, fun=mean, na.rm=TRUE)
x <- data.frame(sw$NAME_1, e)
head(x)
# sw.NAME_1 slope aspect
#1 Aargau 3.065123 170.2449
#2 Appenzell Ausserrhoden 4.905536 187.5591
#3 Appenzell Innerrhoden 7.380191 170.1497
#4 Basel-Landschaft 3.742552 178.2771
#5 Basel-Stadt 1.002250 125.0466
#6 Bern 9.025566 195.5117
您可以像这样将值分配给SpatialPolygons
swe <- cbind(sw, e)