嘿,所以我试图找出存储移动路径的最佳方法,然后再如何查询它们。
让我试着解释一下。假设我有很多汽车在地图上移动,我想确定它们是否以及何时在车队中。如果我只存储路径,那么我可以看到它们沿着同一条道路行驶,但如果它们同时在那里,则不是。我可以存储开始和结束时间,但这不会考虑两辆车的速度变化。我想不出任何明显的方法来存储和实现这一点,所以我想我会把问题放在那里,以防在尝试实施解决方案之前我遗漏了一些东西。那么有人知道我不知道的吗?
谢谢,安德鲁
嘿,所以我试图找出存储移动路径的最佳方法,然后再如何查询它们。
让我试着解释一下。假设我有很多汽车在地图上移动,我想确定它们是否以及何时在车队中。如果我只存储路径,那么我可以看到它们沿着同一条道路行驶,但如果它们同时在那里,则不是。我可以存储开始和结束时间,但这不会考虑两辆车的速度变化。我想不出任何明显的方法来存储和实现这一点,所以我想我会把问题放在那里,以防在尝试实施解决方案之前我遗漏了一些东西。那么有人知道我不知道的吗?
谢谢,安德鲁
好吧,这取决于您拥有的运动信息类型。如果您有一些表设置,例如:
车辆(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)
)
您还可以查询具有特定时间窗口的多辆车之间的多个共同点。
您也可以让查询检查纬度和经度值是否在彼此的一定半径内。