我希望为每个ISO3(空间多边形数据帧wrld_simpl中的列名)提取栅格r的像素值之和。我当时想使用栅格化功能,然后使用zonal功能,但是在栅格化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)
答案 0 :(得分:1)
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