2

嘿,所以我试图找出存储移动路径的最佳方法,然后再如何查询它们。

让我试着解释一下。假设我有很多汽车在地图上移动,我想确定它们是否以及何时在车队中。如果我只存储路径,那么我可以看到它们沿着同一条道路行驶,但如果它们同时在那里,则不是。我可以存储开始和结束时间,但这不会考虑两辆车的速度变化。我想不出任何明显的方法来存储和实现这一点,所以我想我会把问题放在那里,以防在尝试实施解决方案之前我遗漏了一些东西。那么有人知道我不知道的吗?

谢谢,安德鲁

4

1 回答 1

0

好吧,这取决于您拥有的运动信息类型。如果您有一些表设置,例如:

车辆(ID、类型、容量,...)

运动点(VehicleId、纬度、经度、日期时间、平均速度)

这将允许您查询两辆车是否在正负 5 分钟内到达同一点,如下所示:

Select * from Vehicle v INNER JOIN MovementPoint mp on mp.VehicleId = v.Id
WHERE v.Id = @FirstCarID 
AND EXISTS 
    (
     SELECT 1 FROM Vehicle v2 INNER JOIN MovementPoint mp2 on mp2.VehicleId = v2.Id
     WHERE v2.Id = @SecondCarId 
     AND mp2.Latitude = mp.Latitude AND mp2.Longitude = mp.Longitude
     AND mp2.DateTime BETWEEN DATEADD(minute,-5,mp.DateTime) AND DATEADD(minute,5,mp.DateTime)
    )

您还可以查询具有特定时间窗口的多辆车之间的多个共同点。

您也可以让查询检查纬度和经度值是否在彼此的一定半径内。

于 2011-05-18T00:05:21.277 回答