【问题标题】:Distance Between Points Within Radius at Time Intervals时间间隔半径内的点之间的距离
【发布时间】:2018-11-25 03:20:40
【问题描述】:

数据如下所示:

ID Lat Long Time
1  3   3    00:01
1  3   4    00:02
1  4   4    00:03
2  4   3    00:01
2  4   4    00:02
2  4   5    00:03
3  5   2    00:01
3  5   3    00:02
3  5   4    00:03
4  9   9    00:01
4  9   8    00:02
4  8   8    00:03
5  7   8    00:01
5  8   8    00:02
5  8   9    00:03

我想测量在每个给定时间间隔内,ID 在给定半径内彼此相距多远。我在 16213 个时间间隔内对 1057 个 ID 执行此操作,因此效率很重要。

测量半径内的点之间的距离很重要,因为如果点太远我不在乎。我正在尝试测量相对较近的点之间的距离。例如,我不关心 ID 1 与 ID 5 的距离,但我关心 ID 4 与 ID 5 的距离。

我正在使用 R 和 sp 包。

【问题讨论】:

  • 您似乎很清楚自己想要做什么以及所涉及的步骤。试用 dplyrmultidplyr 软件包。它们具有处理表格数据的良好结构,multidplyr 具有并行处理支持。

标签: r time distance spatial ais


【解决方案1】:

就我所见,会有多次重复的值。因此,我建议只计算每对坐标的距离一次(即使在 df 中重复多次)作为起点。您可以过滤数据并合并表格。 (我会将其添加为评论,但我还没有足够的声誉这样做)。

第一行是:

#Creating a DF with no repeated coordinates
df2 <- df %>% group_by(Lat,Long) %>% summarise()

# Calculating Distances
Dist <- distm(cbind(df2$Long,df2$Lat))

【讨论】:

  • 感谢您的回答,但这意味着计算 1057^2 距离 16213 次。是的,如果我的计算机有更多 RAM,这会起作用,但我正在寻找更优雅的解决方案。
猜你喜欢
  • 2021-01-22
  • 2018-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-22
  • 2014-11-29
相关资源
最近更新 更多