我跟着How do I extract raster values from polygon data then join into spatial data frame?(这很有用)为多边形创建平均栅格值的矩阵(然后是数据帧)。现在的问题是我想知道哪个多边形是哪个。我的SpatialPolygonsDataFrame的ID值为p$Block_ID
。有没有办法在extract()
代码中解决这个问题?
或者,extract()
函数报告按输入顺序输出(这是否有意义)?即p$Block_ID
的顺序将保留在输出中?我查看了文档,但不清楚这种或那种方式。如果是这样,可以很容易地将ID列添加到extract()
输出。
这是我的通用代码供参考。注意注意可重复,因为我不认为它真的需要在这一点上。其中r是栅格,p是多边形
extract(r, p, small = TRUE, fun = mean, na.rm = TRUE, df = TRUE, nl = 1)
思想?
答案 0 :(得分:1)
按顺序返回值,如R中所期望的那样,并且如手册(?extract
)中所述:*返回值的顺序对应于对象的顺序y *
因此你可以做到
e <- extract(r, p)
ee <- data.frame(ID=p$Block_ID, e)
你应提供了一个可重复的示例,并且很容易制作一个例子,例如以?extract
中的示例为基础。
答案 1 :(得分:0)
我无法得到R. Hijmans的答案为我工作。我发现这可行。
e = extract(r, p)
e$ID = as.factor(e$ID)
levels(e$ID) = levels(p$Block_ID)