测量同时点之间的距离


9

我正在使用GPS数据,所以我有带有日期/时间信息的UTM。我有2种动物(麋鹿和狼)。我想将信息从驼鹿到及时匹配的狼中加入。因此,驼鹿1的位置1 大约是在同一时间记录的所有狼的2007-03-26 14:33:49 。大约是关键-这意味着我将必须有一个时间窗口或缓冲区来查找那个时间在30分钟缓冲区内的所有狼位置。

我正在寻找一个脚本或工具,该脚本或工具将设置窗口缓冲区+/- X min,并且能够“分批”处理。我至少要有30只麋鹿和30只狼-因此一次匹配一对是没有帮助的。一旦Ive匹配了日期/时间,我便要计算驼鹿和狼的XY位置之间的距离以及时间差。我想要这样的输出:

individualmooseID | mooseDate | mooseX | mooseY | individualwolfID | wolfDate | wolfX | wolfY | Distance(m) | TimeDiff (min)

在同一时间段内,mooseID最多可以匹配几个不同的wolfID。任何建议,将不胜感激。我已经为R编写了代码,但无法正常工作,请参阅我的问题:https : //stackoverflow.com/q/15646365/675742,我将不得不将数据带入ArcGIS,以便可以跳过R并执行这一切都在ArcGIS中,然后再好!


4
很久以前,我成功地创建了两个图层,它们的坐标是时间加上一个人工值y,其中一个数据集的y = 0,而另一个数据集的y =一些常数。此时,您可以使用空间连接,缓冲和其他形式的空间分析来回答您的问题,因为这些人造坐标中的接近度与时间上的接近度相同。
ub

Answers:


4

这样的数据集当然可以提供很多信息。

我将在空间数据库环境(最好是PostgreSQL / PostGIS)中进行此操作。

您想要做的似乎是对空间和时间数据的简单连接。

然后,您可以在一个查询中完成所有操作。棘手的部分可能是优化时间连接的索引。我猜数据集很大。

查询看起来可能像这样(将其读取为伪代码,尤其是时间部分)

SELECT DISTINCT ON (moose_id, wolf_id, moose_time) 
moose_id, moose_geom, moose_time, wolf_id, wolf_geom, wolf_time,
ST_Distance(moose_geom, wolf_geom) as dist, moose_time-wolf_time as time_diff
FROM
moose_table as mt inner join wolf_table as wt 
on 
ST_DWithin(moose_geom, wolf_geom,10000) 
AND moose_time > ( wolf_time-30) 
AND moose_time < (wolf_time + 30) 
ORDER BY abs(time_diff), moose_id, wolf_id, moose_time;

两个注意事项:
1)我使用ST_DWithin约束配对的狼-驼鹿,它们的距离小于10000米。这是一种减少计算且不计算每种可能组合的方法。
2)我使用DISTINCT ON。对于每个驼鹿时间记录中的每个驼鹿-狼组合,您应该只获得它们最接近的时间的距离。

但是我看到其他几个有趣的查询可以测试您的数据集,这些查询应该提供有关狼狩猎驼鹿方式的有趣信息。

例如,您可以不必及时找到狼和驼鹿之间的距离,而要找出它们在空间上尽可能接近的距离。那只是重新排列顺序。然后,在狼追赶驼鹿的情况下,您会看到狼在时间上落后多远。当然,这将是一个粗略的值,因为我猜想狼不仅会跟踪,而且还会随风飘散,但是在某些情况下,您会看到狼后面有多远,以及它是如何变化的。再加上狼和驼鹿的速度,可能会很好地说明正在发生的事情。

您当然可以从另一个简单的查询中获得速度:-)

因此,将您的表放在postgis数据库中,然后在那做工作。

如果使用的是ArcGIS 10或10.1,则可以直接从数据库中查看数据。或从QGIS。这是PostGIS-QGIS的更成熟的组合。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.