2

我有许多渔船轨道,我正在尝试使用 R 来检测它们的运动中的某种模式。在这样做时,我已经达到了一个点,即我已经丢弃了轨道上没有出现所需模式的所有点给定的时间窗口,剩下的地理参考点。这些点有一个相关的分数值,它测量所需图案的“强度”。

轨道_1 [1:10,]:

        LAT       LON  SCORE
1  32.34855 -35.49264  80.67
2  31.54764 -35.58691  18.14
3  31.38293 -35.25243  46.70
4  31.21447 -35.25830  22.65
5  30.76365 -35.38881  11.93
6  30.75872 -35.54733  22.97
7  30.60261 -35.95472  35.98
8  30.62818 -36.27024  31.09
9  31.35912 -35.73573  14.97
10 31.15218 -36.38027  37.60

下面的代码提供了相同的数据

data.frame(cbind(
    LAT=c(32.34855,31.54764,31.38293,31.21447,30.76365,30.75872,30.60261,30.62818,31.35912,31.15218),
    LON=c(-35.49264,-35.58691,-35.25243,-35.25830,-35.38881,-35.54733,-35.95472,-36.27024,-35.73573,-36.38027),
    SCORE=c(80.67,18.14,46.70,22.65,11.93,22.97,35.98,31.09,14.97,37.60)))

因为其中一些点在地理上彼此接近,所以我需要将他们的分数“汇集”在一起。因此,我现在需要一种方法将这些数据放入某种空间网格中,并对落在网格同一单元格中的所有点的分数进行累积求和。这将使我能够找到给定的渔船在哪些区域展示了我最喜欢的模式(这不仅仅是在一个地方度过的时间)。最终,首选输出将包含每个网格单元(中心)的 lat 和 lon,以及每个单元上所有分数的总和。此外,我还希望能够调整网格单元的大小。

我环顾四周,发现要么不保留地理参考信息,要么效率非常低,要么执行数据分箱。可能已经有一些答案,但可能是我无法识别它们,因为我在这些东西上有点不合群。有人可以指点我一些方向(包,功能等)吗?任何指导将不胜感激。

4

1 回答 1

2

取你的纬度/经度坐标,并将它们乘以你想要的网格单元边缘长度的倒数,以度为单位。结果将是一对浮点数,其整数部分标识所讨论的网格单元。取其中floor的一个,你有两个描述单元格的数字,你可以paste形成一个字符串。您可以将其添加为数据框的新因子列。然后您可以根据该因素执行操作,例如汇总值。

例子:

latScale <- 2 # one cell for every 0.5 degrees
lonScale <- 2 # likewise
track_1$cell <- factor(with(track_1,
    paste(floor(LAT*latScale), floor(LON*lonScale), sep='.')))
library(plyr)
ddply(track_1, .(cell), summarize,
      LAT=mean(LAT), LON=mean(LON), SCORE=sum(SCORE))

如果你愿意,你可以使用weighted.mean而不是平均值。如果您不喜欢这些因素,您可以付出更多努力使它们变得更好(例如,通过使用指南针方向而不是符号),或者完全放弃它们并使用一对整数列来代替。

于 2012-12-14T13:48:50.617 回答