每个 wrld_simpl 个 ISO3 国家/地区的光栅像素值总和

Sum pixel values of a raster for each wrld_simpl ISO3 countries

我希望为每个 ISO3(空间多边形数据框中的列名称 wrld_simpl)提取栅格 r 的像素值之和。我正在考虑使用功能栅格化,然后是区域,但是当栅格化 wrld_simpl 时,我丢失了定义 ISO3 的字符串(例如 AUS,USA ...)。非常感谢您的建议!理想情况下,我的最终输出将是一个数据帧,其中每个 ISO3 都与一个值(对应的像素值总和)相关联

library(raster)
library(maptools)
# wrld_simpl spatial polygon dataframe
data("wrld_simpl")
#sample raster r
r <- raster(ncol=4320, nrow=2160)
r[] <- 1:ncell(r)
#rasterise
wrld_simpl_rast <- rasterize(wrld_simpl,r, field=wrld_simpl@data[,3]) #problem: when I rasterise, the factors of ISO3 are converted into numbers (from 1 to 246)

raster::extract() 似乎是这里有用的功能:

library(raster)
library(maptools)
data("wrld_simpl")
r <- raster(ncol=4320, nrow=2160); r[] <- 1:ncell(r)

out <- extract(r, SpatialPolygons(wrld_simpl@polygons))
df <- data.frame(ISO3=wrld_simpl$ISO3, SUM=unlist(lapply(out, sum)))
head(df)
 ISO3         SUM
1  ATG    11309698
2  DZA 98754992979
3  AZE  3353129894
4  ALB  1051339774
5  ARM  1177578642
6  AGO 79826243906

另见 post https://gis.stackexchange.com/q/66795/118888