gpt4 book ai didi

r - 如何在 R 中使用 3x3 窗口对光栅执行焦点操作(均值)?我有纬度/经度值

转载 作者:行者123 更新时间:2023-12-04 16:01:25 25 4
gpt4 key购买 nike

我有栅格和纬度/经度值,我想使用 3x3 窗口/内核对这些点执行焦点操作。我是 R 的新手。

最佳答案

这是一个工作流程,用于计算以定义的纬度/经度坐标为中心的 3x3 区域中栅格的平均值。

栅格化点并扩大生成的栅格以创建 3x3 区域

library(mmand)
library(raster)

# rasterize points based on lat/lon coordinates
z <- rasterize(pts[,2:3], r, field = pts$id)

# dilate z using a 3x3 box
kern <- shapeKernel(c(3,3), type="box")
z[,] <- dilate(as.matrix(z), kern)

plot(z)

enter image description here

计算每个区域中 r 值的平均值

# raster::zonal function (zonal statistics) is used 
# -Inf correspond to NA values and should not be taken into account
# you can change "mean" by the stats you would like to compute
zonal(r, z, fun = "mean")

# zone mean
#[1,] -Inf 5.563607
#[2,] 1 5.000000
#[3,] 2 3.444444
#[4,] 3 5.222222

示例数据

library(raster)
set.seed(1)
# Generate raster of random values
r <- raster(crs = CRS("+proj=robin +datum=WGS84"), resolution = c(10, 10))
r[] <- round(runif(ncell(r), 1, 10))
# Generate data frame with lat/lon coordinates
pts <- data.frame(id = 1:3, lon = c(-100, 40, 120), lat = c(-45, 5, 35))

plot(r)
points(pts$lon, pts$lat, pch = 20, cex = 2)

enter image description here

关于r - 如何在 R 中使用 3x3 窗口对光栅执行焦点操作(均值)?我有纬度/经度值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50398473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com