Использование rasterize(..., fun = "count")
Вот воспроизводимый пример, взятый из документов (?rasterize
).
library(raster)
# create a raster
r <- raster(ncols=36, nrows=18)
n <- 1000
# create some points
set.seed(123)
x <- runif(n) * 360 - 180
y <- runif(n) * 180 - 90
xy <- cbind(x, y)
# count the number of points in each raster cell
r0 <- rasterize(xy, r, fun = "count")
# visualize
plot(r0); points(xy, pch = 16, cex=0.5)
Чтобы проверить разрешение RasterLayer
, используйте res(raster_object)
.Чтобы изменить это разрешение, используйте присвоение:
x_res <- 100 # resolution in x
y_res <- 100 # resolution in y
res(raster_object) <- c(x_res, y_res) # set the x,y resolution of the raster
Поскольку вам нужны растровые ячейки 0,5 градуса, сначала проверьте, в каких единицах измерения находится ваш crs
(например, в метрах), вычислите разрешение x и y в этих единицах,и затем назначьте это разрешение на растр.Также имейте в виду, что градусы широты немного различаются в зависимости от того, находитесь ли вы ближе к экватору или полюсам.
Для визуализации с помощью ggplot вы можете преобразовать объект RasterLayer
в data.frame
так.Хотя я этого не показываю, вы можете добавить точки как еще один слой geom_point
или geom_sf
в объект ggplot.
# convert to data.frame and plot with ggplot
df <- as.data.frame(r0, xy=TRUE)
library(ggplot2)
ggplot(df, aes(x, y, fill = layer)) +
geom_raster() +
scale_fill_viridis_c(na.value = "white") +
labs(fill = "Count") +
theme_minimal()