【问题标题】:aggregate the points that have same coordinates in one point将具有相同坐标的点聚合到一个点
【发布时间】:2018-07-08 14:09:11
【问题描述】:

我对 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

【问题讨论】:

    标签: r coordinates latitude-longitude spatial aggregation


    【解决方案1】:

    您可以使用我在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() 按您的四舍五入坐标进行分组,并根据需要聚合时间和速度值。

    【讨论】:

      猜你喜欢
      • 2015-03-17
      • 2012-01-14
      • 2020-09-09
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      • 1970-01-01
      相关资源
      最近更新 更多