计算多边形的坡度和坡向

Calculate slope and aspect for polygons

我有一个包含 125 个独特多边形的多边形 sf 对象(代表分散在美国各州的不同区域)。 None 个多边形共享一个边界。我还有一个 30m 的山体阴影数字高程模型栅格图像,它覆盖了多边形的区域(然后是一些)。我想使用栅格包中的地形函数来计算每个多边形的独特坡度和坡向。我的最终产品将使多边形 sf 对象具有两个新列,即坡度和坡向,因此每个多边形都有其坡度和坡度。

我在原始的全州光栅图像和仅多边形区域的蒙版光栅图像上使用了地形函数,returns 整个光栅图像的最小和最大坡度和坡向。

除此之外,我对如何为每个唯一的多边形区域计算坡度和坡向,然后将该数据导入多边形 sf 对象一事不知所措。如果有人有任何建议,我很乐意听到。

谢谢!

示例数据

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)