使用 R,我正在尝试使用多边形图层从栅格图层中提取数据。多边形比栅格像元小得多:
现在我extract()
从raster
图书馆打电话:
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