以较粗的分辨率聚合栅格数据
Aggregating raster data at coarser resolution
我有一个 0.25 * 0.25 度网格分辨率的数据集
lon <- c(-53.615449969, -53.365449969, -53.115449969, -53.365449969,
-53.115449969, -52.865449969, -53.365449969, -53.115449969, -52.865449969,
-52.615449969, -53.365449969, -53.115449969, -52.865449969, -52.615449969,
-52.365449969, -53.365449969, -53.115449969, -52.865449969, -52.615449969,
-52.365449969, -53.615449969, -53.365449969, -53.115449969, -52.865449969,
-52.615449969, -52.365449969, -52.115449969, -53.865449969, -53.615449969,
-53.365449969, -53.115449969, -52.865449969, -52.615449969, -52.365449969,
-52.115449969, -51.865449969, -54.365449969, -54.115449969, -53.865449969,
-53.615449969, -53.365449969, -53.115449969, -52.865449969, -52.615449969,
-52.365449969, -52.115449969, -51.865449969, -51.615449969, -54.615449969,
-54.365449969, -54.115449969, -53.865449969, -53.615449969, -53.365449969,
-53.115449969, -52.865449969, -52.615449969, -52.365449969, -52.115449969,
-51.615449969)
lat <- c(-33.627081271, -33.627081271, -33.627081271, -33.377081271,
-33.377081271, -33.377081271, -33.127081271, -33.127081271, -33.127081271,
-33.127081271, -32.877081271, -32.877081271, -32.877081271, -32.877081271,
-32.877081271, -32.627081271, -32.627081271, -32.627081271, -32.627081271,
-32.627081271, -32.377081271, -32.377081271, -32.377081271, -32.377081271,
-32.377081271, -32.377081271, -32.377081271, -32.127081271, -32.127081271,
-32.127081271, -32.127081271, -32.127081271, -32.127081271, -32.127081271,
-32.127081271, -32.127081271, -31.877081271, -31.877081271, -31.877081271,
-31.877081271, -31.877081271, -31.877081271, -31.877081271, -31.877081271,
-31.877081271, -31.877081271, -31.877081271, -31.877081271, -31.627081271,
-31.627081271, -31.627081271, -31.627081271, -31.627081271, -31.627081271,
-31.627081271, -31.627081271, -31.627081271, -31.627081271, -31.627081271,
-31.627081271)
df <- as.data.frame(cbind(lon, lat))
df$ID <- 1:nrow(df)
coordinates(df) <- c(1,2)
library(raster)
elev <- getData('alt', country='BRA')
plot(elev)
plot(df, add = T)
对于我的每个 0.25 * 0.25 度网格正方形,我想计算平均高程。我怎样才能在 R 中做到这一点?
鉴于 res(elev)
是 0.008333333
(即 1/120
),您希望使用因子 .25 * 120 = 30
进行聚合。最简单的方法是
a <- aggregate(elev, 30, fun=mean, na.rm=TRUE)
现在分辨率符合要求,但不符合您指定的光栅。图说:
r <- rasterFromXYZ(df)
s <- as(r, 'SpatialPolygons')
z <- crop(a, r, snap='out')
plot(z)
plot(s, add=TRUE)
相反,您可以这样做:
x <- resample(elev, r)
或(更精确,但更慢)
e <- extract(elev, s, fun=mean, na.rm=TRUE)
s$elev <- e
比较值
z <- rasterize(r, s)
plot(z, e)
我有一个 0.25 * 0.25 度网格分辨率的数据集
lon <- c(-53.615449969, -53.365449969, -53.115449969, -53.365449969,
-53.115449969, -52.865449969, -53.365449969, -53.115449969, -52.865449969,
-52.615449969, -53.365449969, -53.115449969, -52.865449969, -52.615449969,
-52.365449969, -53.365449969, -53.115449969, -52.865449969, -52.615449969,
-52.365449969, -53.615449969, -53.365449969, -53.115449969, -52.865449969,
-52.615449969, -52.365449969, -52.115449969, -53.865449969, -53.615449969,
-53.365449969, -53.115449969, -52.865449969, -52.615449969, -52.365449969,
-52.115449969, -51.865449969, -54.365449969, -54.115449969, -53.865449969,
-53.615449969, -53.365449969, -53.115449969, -52.865449969, -52.615449969,
-52.365449969, -52.115449969, -51.865449969, -51.615449969, -54.615449969,
-54.365449969, -54.115449969, -53.865449969, -53.615449969, -53.365449969,
-53.115449969, -52.865449969, -52.615449969, -52.365449969, -52.115449969,
-51.615449969)
lat <- c(-33.627081271, -33.627081271, -33.627081271, -33.377081271,
-33.377081271, -33.377081271, -33.127081271, -33.127081271, -33.127081271,
-33.127081271, -32.877081271, -32.877081271, -32.877081271, -32.877081271,
-32.877081271, -32.627081271, -32.627081271, -32.627081271, -32.627081271,
-32.627081271, -32.377081271, -32.377081271, -32.377081271, -32.377081271,
-32.377081271, -32.377081271, -32.377081271, -32.127081271, -32.127081271,
-32.127081271, -32.127081271, -32.127081271, -32.127081271, -32.127081271,
-32.127081271, -32.127081271, -31.877081271, -31.877081271, -31.877081271,
-31.877081271, -31.877081271, -31.877081271, -31.877081271, -31.877081271,
-31.877081271, -31.877081271, -31.877081271, -31.877081271, -31.627081271,
-31.627081271, -31.627081271, -31.627081271, -31.627081271, -31.627081271,
-31.627081271, -31.627081271, -31.627081271, -31.627081271, -31.627081271,
-31.627081271)
df <- as.data.frame(cbind(lon, lat))
df$ID <- 1:nrow(df)
coordinates(df) <- c(1,2)
library(raster)
elev <- getData('alt', country='BRA')
plot(elev)
plot(df, add = T)
对于我的每个 0.25 * 0.25 度网格正方形,我想计算平均高程。我怎样才能在 R 中做到这一点?
鉴于 res(elev)
是 0.008333333
(即 1/120
),您希望使用因子 .25 * 120 = 30
进行聚合。最简单的方法是
a <- aggregate(elev, 30, fun=mean, na.rm=TRUE)
现在分辨率符合要求,但不符合您指定的光栅。图说:
r <- rasterFromXYZ(df)
s <- as(r, 'SpatialPolygons')
z <- crop(a, r, snap='out')
plot(z)
plot(s, add=TRUE)
相反,您可以这样做:
x <- resample(elev, r)
或(更精确,但更慢)
e <- extract(elev, s, fun=mean, na.rm=TRUE)
s$elev <- e
比较值
z <- rasterize(r, s)
plot(z, e)