Суммируйте пиксельные значения растра для каждой страны wrld_simpl ISO3
Я хочу извлечь для каждого ISO3 (имя столбца в пространственном многоугольнике данных wrld_simpl) сумму значений пикселей растра r. Я думал об использовании функции rasterize, за которой следует 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)
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
Смотрите также пост https://gis.stackexchange.com/q/66795/118888.