R - 将点转换为 30 x 30m 栅格中心的点
R - Convert points into points in the centre of raster of 30 x 30m
我想将特定的空间点数据集转换为栅格中心的点。
结果应该是空间点,对于原始数据集中的每个点,栅格中心的一个点。
我编写此示例代码是为了更好地了解任务。
library(raster)
library(plyr)
library(ggplot2)
library(viridis)
setwd("C:/Users/chris/Desktop/Regionaler Klimawandel und Gesundheit/Urban COPD/R/Data/")
getwd()
set.seed(55)
r <- raster(xmn= 800000,
xmx= 810000,
ymn= 7200000,
ymx= 7210000)
p <- as(r@extent, 'SpatialPolygons')
pts <- spsample(p, n = 100, "random")
pts$value <- runif(100, min=0, max=10)
df <- as.data.frame(pts)
ggplot(data= df, aes(x, y, fill =value))+
geom_point(shape = 21, size = 2)+
scale_fill_viridis()+
theme_minimal()
谢谢大家!
如果我没理解错的话,您希望 values
列与 raster
对象 r
.
中 x、y 处的网格点相关联
既然如此,您可以在上面的代码中添加以下行:
r <- rasterize(cbind(df$x, df$y), r, df$value, fun = mean)
所以现在 r
看起来像这样:
r
#> class : RasterLayer
#> dimensions : 180, 360, 64800 (nrow, ncol, ncell)
#> resolution : 27.77778, 55.55556 (x, y)
#> extent : 8e+05, 810000, 7200000, 7210000 (xmin, xmax, ymin, ymax)
#> crs : NA
#> source : memory
#> names : layer
#> values : 0.08473639, 9.896253 (min, max)
plot(r)
请注意,由于光栅的分辨率,您必须仔细观察才能看到这些点。
如果降低初始光栅的分辨率,通过将 r
创建为:
r <- raster(xmn= 800000,
xmx= 810000,
ymn= 7200000,
ymx= 7210000,
ncols = 50, nrows = 50)
然后您可以更清楚地看到这些点,并注意它们与您 ggplot
:
上的点相匹配
r <- rasterize(cbind(df$x, df$y), r, df$value, fun = mean)
plot(r)
由 reprex package (v2.0.0)
于 2021-11-03 创建
我想将特定的空间点数据集转换为栅格中心的点。 结果应该是空间点,对于原始数据集中的每个点,栅格中心的一个点。
我编写此示例代码是为了更好地了解任务。
library(raster)
library(plyr)
library(ggplot2)
library(viridis)
setwd("C:/Users/chris/Desktop/Regionaler Klimawandel und Gesundheit/Urban COPD/R/Data/")
getwd()
set.seed(55)
r <- raster(xmn= 800000,
xmx= 810000,
ymn= 7200000,
ymx= 7210000)
p <- as(r@extent, 'SpatialPolygons')
pts <- spsample(p, n = 100, "random")
pts$value <- runif(100, min=0, max=10)
df <- as.data.frame(pts)
ggplot(data= df, aes(x, y, fill =value))+
geom_point(shape = 21, size = 2)+
scale_fill_viridis()+
theme_minimal()
谢谢大家!
如果我没理解错的话,您希望 values
列与 raster
对象 r
.
既然如此,您可以在上面的代码中添加以下行:
r <- rasterize(cbind(df$x, df$y), r, df$value, fun = mean)
所以现在 r
看起来像这样:
r
#> class : RasterLayer
#> dimensions : 180, 360, 64800 (nrow, ncol, ncell)
#> resolution : 27.77778, 55.55556 (x, y)
#> extent : 8e+05, 810000, 7200000, 7210000 (xmin, xmax, ymin, ymax)
#> crs : NA
#> source : memory
#> names : layer
#> values : 0.08473639, 9.896253 (min, max)
plot(r)
请注意,由于光栅的分辨率,您必须仔细观察才能看到这些点。
如果降低初始光栅的分辨率,通过将 r
创建为:
r <- raster(xmn= 800000,
xmx= 810000,
ymn= 7200000,
ymx= 7210000,
ncols = 50, nrows = 50)
然后您可以更清楚地看到这些点,并注意它们与您 ggplot
:
r <- rasterize(cbind(df$x, df$y), r, df$value, fun = mean)
plot(r)
由 reprex package (v2.0.0)
于 2021-11-03 创建