将栅格值提取到R中的多边形时包括多边形ID

时间:2016-02-24 18:30:21

标签: r

我跟着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)

思想?

2 个答案:

答案 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)