我已经研究了一段时间了,但是没有遇到任何符合我需要的解决方案,或者我可以充分改造以适应我的情况:
我有一个大型汽车共享多个城市的数据集,其中我有每个位置的充电需求(例如,行= carID,55.63405,12.58818,充电需求)。我现在想把城市上方的区域(上面的示例是哥本哈根)分成六边形网格并用ID标记每个停车位置(例如,行= carID,55.63405,12.58818,充电需求,单元格ABC),所以我知道哪个它所属的六角形细胞。
所以我的问题是双重的: (1)如何在这个区域创建这样一个边长为124米(约40000平方米,相当于200x200米,但六边形更好)的蜂窝网格:
my_area <- structure(list(longitude = c(12.09980, 12.09980, 12.67843, 12.67843),
latitude = c(55.55886, 55.78540, 55.55886, 55.78540)),
.Names = c("longitude", "latitude"),
class = "data.frame", row.names = c(NA, -4L))
(2)如何将地图上的所有点与某个网格单元关联起来?
我真的迷失在这一点上,我试图使用大量的软件包,如rgdal,hexbin,sp,raster,rgeos,rasterVis,dggridR,......但是没有一个能让我到达我想去的地方。非常感谢帮助!
停车数据示例:
id latitude longitude timestamp charging_demand
1: WBY1Z210X0V307780 55.68387 12.60167 2016-07-30 12:35:07 22
2: WBY1Z210X0V307780 55.63405 12.58818 2016-07-30 16:35:07 27
3: WBY1Z210X0V307780 55.68401 12.49015 2016-08-02 16:00:08 44
4: WBY1Z210X0V307780 55.68694 12.49146 2016-08-03 13:40:07 1
5: WBY1Z210X0V307780 55.68564 12.48824 2016-08-03 14:00:07 66
6: WBY1Z210X0V307780 55.66065 12.60569 2016-08-04 16:19:15 74
答案 0 :(得分:2)
我认为你确实可以使用hexbin
包。像这样调用函数:
h <- hexbin(data_x, data_y, nbins, range_x, range_y, IDs = TRUE)
结果有一列cID
,告诉您观察所在的单元格。你可以使用它来例如计算每个细胞的平均充电需求:
tapply(charging_demand, h@cID, FUN = function(z) sum(z)/length(z))
此外,您可以使用hcell2xy
获取可用于使用ggplot进行绘图的坐标。例如,您可以查看此answer。