【问题标题】:Calculate slope and aspect for polygons计算多边形的坡度和坡向
【发布时间】:2019-12-29 16:21:06
【问题描述】:
我有一个包含 125 个独特多边形的多边形 sf 对象(代表分散在美国各州的不同区域)。没有一个多边形共享边界。我还有一个 30m 的山体阴影数字高程模型光栅图像,它覆盖了多边形的区域(然后是一些)。我想使用 raster 包中的地形函数来计算每个多边形的唯一坡度和坡向。我的最终产品将是具有两个新列的多边形 sf 对象,坡度和坡向,因此每个多边形都有其坡度和坡向。
我在原始的全州光栅图像和仅多边形区域的蒙版光栅图像上使用了地形函数,它返回整个光栅图像的最小和最大坡度和方面。
除此之外,我对如何计算每个唯一多边形区域的坡度和坡向,然后将这些数据输入多边形 sf 对象非常迷茫。如果有人有任何建议,我很乐意听到。
谢谢!
【问题讨论】:
-
See here 提出一个人们可以帮助解决的 R 问题。这包括数据样本、所有必要的代码,以及对您正在尝试做的事情和没有奏效的事情的清晰解释。
标签:
r
geospatial
raster
r-raster
terrain
【解决方案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)