使用R语言,我正在尝试使用多边形图层从栅格图层中提取数据。这些多边形比栅格单元格要小得多。
有两个问题 - 权重是多边形覆盖的单元格区域比例,而权重被舍入为1/100。在我的情况下,只有左上角的单元格出现在输出中(值为209) - 另外3个单元格的权重被舍入为零并被排除在外。然而,左下角的单元格覆盖了多边形的重要部分,也应该被包括在内!我需要一个适当的加权平均数。是否可以使用
现在我从 raster
库调用 extract()
:
a <- extract(raster, polygons, weights = TRUE, small = TRUE)
a
# ...
# [[1551]]
# value weight
# 209 0.03 # top left cell - more than 50% of the polygon area
有两个问题 - 权重是多边形覆盖的单元格区域比例,而权重被舍入为1/100。在我的情况下,只有左上角的单元格出现在输出中(值为209) - 另外3个单元格的权重被舍入为零并被排除在外。然而,左下角的单元格覆盖了多边形的重要部分,也应该被包括在内!
我需要一个适当的加权平均数。是否可以使用extract()
以其他方式完成?或者其他方法?
PS: 附注:我认为extract()
中的权重设计得不太好 - 权重应该是特定单元格覆盖的多边形区域比例,而不是相反。然后,对于多边形的加权平均值也更容易计算(只需将每行中的两个数字相乘并求和),而舍入为1/100也不会成为大问题。
可重复的示例 - (下载文件 - 简化版本,实际数据要大得多):
require(raster)
rast <- raster("my.tif")
poly <- readOGR(".", "socc_buff_Rx")
a <- extract(rast, poly, weights = TRUE, small = TRUE)
a
相关链接:在R中提取小多边形和栅格数据失败
extract
函数的作者发送更改请求,并附上此页面的链接。 任何人都可以这样做。 - Tomas