【发布时间】:2019-05-21 00:18:41
【问题描述】:
计算空间网格的每个网格单元内的采样点总数。
我想制作一个网格并计算每个网格单元内的采样点总数。我创建了一个随机生成的数据和网格,并尝试使用 sf 和 raster 包计算网格单元格内的记录数,使用以前类似的 SO 问题,但没有成功。我还研究了提取功能。我对空间分析相当陌生。
library(sf)
library(raster)
library(tidyverse)
library(mapview)
library(mapedit)
#Trial with sf package
# load some spatial data. Administrative Boundary
#https://stackoverflow.com/questions/41787313/how-to-create-a-grid-of- spatial-points
aut <- getData('GADM', country = 'aut', level = 0)
aut <- st_as_sf(aut)
#Try with polygons
grid <- aut %>%
st_make_grid(cellsize = 0.5, what = "polygons") %>%
st_intersection(aut)
#fake data
lat<-runif(1000, 46.5, 48.5)
lon<-runif(1000, 13,16)
pos<-data.frame(lat,lon)
ggplot() +
geom_sf(data = aut) +
geom_sf(data = grid)+
geom_point(data=pos, aes(lon, lat))
#how to count number of records within each cell?
########################################
#Trial with raster package
#https://stackoverflow.com/questions/32889531/r-how-can-i-count-how- many-points-are-in-each-cell-of-my-grid
r<-raster(xmn=13, ymn=46.5, xmx=16, ymx=48.5, res=0.5)
r[] <- 0
#How do I use the pos data here
xy <- spsample(as(extent(r), 'SpatialPolygons'), 100, 'random')
tab <- table(cellFromXY(r, xy))
r[as.numeric(names(tab))] <- tab
plot(r)
points(xy, pch=20)
d <- data.frame(coordinates(r), count=r[])
我想获得一个包含采样点数的表格。
【问题讨论】:
-
您查看过 stat_bin_2d 吗?或者stat_hex_bin?这些计算每个 bin 的计数和密度。
-
感谢您的建议。我没有考虑过 stat_bin_2d 或 stat_hex_bin。你如何获得垃圾箱的数量?我刚开始玩这些功能,但到目前为止还没有得到任何有意义的东西。 ggplot(pos, aes(lon, lat)) + geom_bin2d(binwidth = 2) + stat_bin2d(geom = "text", aes(label = ..count..),binwidth = 10) + scale_fill_gradient(low = "white" , 高 = "红色")