Суммируйте пиксельные значения растра для каждой страны wrld_simpl ISO3 - PullRequest
0 голосов
/ 05 ноября 2018

Я хочу извлечь для каждого ISO3 (имя столбца в массиве данных пространственного многоугольника wrld_simpl) сумму значений пикселей растра r. Я думал об использовании функции rasterize, за которой следует zonal, но при растеризации wrld_simpl я теряю строки символов, определяющие ISO3 (например, AUS, США ...). Большое спасибо за ваше предложение! В идеале, мой окончательный вывод будет кадром данных, в котором каждый 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 Ответ

0 голосов
/ 05 ноября 2018

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.

...