R中地理参考变量的累积和

时间:2012-12-14 11:57:46

标签: r datagrid sum geospatial latitude-longitude

我有许多渔船的轨道,我正试图用R来检测它们的运动中的某种模式。在这样做的时候,我已经达到了我已经丢弃了所需模式所在的轨道的所有点的点。没有发生在给定的时间窗口内,我留下了剩余的地理参考点。这些点具有相关的得分值,其测量所需图案的“强度”。

track_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,以及每个单元格上所有分数的总和。此外,我还希望能够调整网格单元的大小。

我环顾四周,所有我能找到的不是保留地理参考信息,效率非常低,或者执行数据分级。可能已经有了一些答案,但可能是我无法识别它们的情况,因为我对这个问题有点不合时宜。有人可以指点一些方向(包装,功能等)吗?任何指导将不胜感激。

1 个答案:

答案 0 :(得分:2)

获取lat / lon坐标,并将它们乘以所需网格单元边长的倒数,以度为单位。结果将是一对浮点数,其整数部分标识所讨论的网格单元。取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代替平均值。如果您不喜欢这些因素,您可以付出更多努力使其变得更好(例如,使用罗盘方向而不是标志),或者完全删除它们并使用一对整数列代替。