r - 使用 raster::zonal 每个区域的 R 统计信息
问题描述
我想计算与经纬网对齐的区域的区域统计数据。
在获得范围列表后,想法是分配块编号,因为 raster::zonal 函数需要一个带有代表区域代码的栅格图层。
当我尝试用区域编号填充范围时,填充区域与范围不对应(参见图)。这是为什么?
library(raster)
library(foreach)
filename <- system.file("external/test.grd", package="raster")
r=raster(filename)
xmin = seq(178000, 181000, 1000)
ymin = seq(329000, 333000, 1000)
e=foreach(j=ymin,.combine=c) %:%
foreach(i=xmin) %do% {
e=extent(i,i+1000,j,j+1000)
}
# this should be going into the foreach loop
n=length(r[e[[1]]])
r[e[[1]]]=rep(1,n)
plot(r)
plot(e[[1]],add=T)
解决方案
您可以使用 QGIS 生成一个 shapefile,其中包含作为常规网格的网格单元。之后,您可以使用 shapefile 和您的 rasterfile raster::extract
(https://www.rdocumentation.org/packages/raster/versions/3.0-7/topics/extract),甚至更快地使用exactextractr::exact_extract
(https://cran.r-project。 org/web/packages/exactextractr/index.html )
推荐阅读
- ios - Swift UIDocumentPickerViewController 没有像操作表弹出一样显示
- javascript - 模糊/隐藏 Android 键盘和焦点输入类型
- javascript - 如何在 html 中重绘或调整矩形的大小?
- r - 使用所有属性运行神经网络时出现问题
- r - 如何将鼠标悬停在闪亮的 ggplot2 极坐标图中的标签上?
- ios - PerformSegueWithIdentifier() 在启动应用程序后第一次执行时花费的时间明显更长
- python - Selenium Python Behave WebDriverWait
- angular - 如何重写公式?
- php - PHP PDO 使用下拉菜单过滤数据
- sql - 为数据库中的每个用户插入一行(sql)