r - 每个 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)
解决方案
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
推荐阅读
- python - 如何使用 list_objects_v2 从 S3 获取超过 1000 个对象?
- sh - 如何将命令行参数传递给 kdb 函数
- perl - Perl:正确引用所有特殊字符
- dart - onTap 不适用于 ListWheelScrollView 子项 - Flutter
- python - 如何将 Numpy ndarray 分成块
- r - 使用 R 根据指定条件将日期转换为日期范围
- ios - 没有 Interface Builder 的自定义 UITabBar 子类
- c - 如果 MPI Isend/Irecv 和 MPI wait 之间的语句阻止程序继续进行。这可能是什么原因造成的?
- html - 一个视频我不会在 chrome 中加载加载。我该如何解决?
- java - minOccurs 和 maxOccurs