聚合一个点中具有相同坐标的点

时间:2018-01-29 19:36:49

标签: r coordinates latitude-longitude spatial aggregation

我对R中的空间聚合有疑问。我的数据集的纬度/经度坐标彼此接近,有些则不然。我想为彼此接近的纬度/经度坐标做一点 我不确定该怎么做。我是否将纬度/经度坐标列为组并找到平均值以使一个点代表每个组?因为我对这种东西没什么经验。我希望你们中的任何人都有一些有用的指导/可能的解决方案。

Time Received   Speed   Latitude    Longitude
1.47917E+12      1.5    38.9295887  -77.2478945
1.47917E+12       1     38.9295048  -77.247922
1.47917E+12       3     38.9294865  -77.2479055
1.47917E+12       5     38.9294865  -77.2479055
1.47917E+12       2     38.9294771  -77.2478712
1.47917E+12       2     38.9294772  -77.2478712
1.47917E+12      1.5    38.9294771  -77.2477417
1.47917E+12      1.5    38.9294771  -77.2477417

例如,如果我可以将下面的纬度/经度坐标作为一个点:

     38.9294771 -77.2478712
     38.9294772 -77.2478712
     38.9294771 -77.2477417
     38.9294771 -77.2477417

例如,如下所示,不会影响时间和速度值:

38.9294771  -77.24774117

1 个答案:

答案 0 :(得分:0)

您可以使用我在round_any equivalent for dplyr?找到的下面给出的函数来将坐标四舍五入到任何所需的精度。在下面的例子中,我使用0.1。

fakedata <- data.frame(time = 1:100, 
                       speed = sample(3, 100, replace=TRUE),
                       latitude = seq(from=20, by=0.01, length.out=100),
                       longitude = seq(from=30, by=0.01, length.out=100))


round_any = function(x, accuracy, f=round){f(x/ accuracy) * accuracy}

library(dplyr)

fakedata %>%
  mutate(latitude_round = round_any(latitude, accuracy = 0.1),
         longitude_round = round_any(longitude, accuracy = 0.1))

然后使用dplyr::group_by()按圆角坐标分组,然后根据需要汇总时间和速度值。