【问题标题】:Movement Paths & Spatial-Temporal Queries in SQL ServerSQL Server 中的移动路径和时空查询
【发布时间】:2011-05-17 23:40:02
【问题描述】:

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

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

谢谢, 安德鲁

【问题讨论】:

    标签: sql-server spatial temporal


    【解决方案1】:

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

    车辆(ID、类型、容量……)

    MovementPoint(VehicleId, Latitude, Longitude, DateTime, AverageSpeed)

    这将允许您像这样查询两辆车是否在正负 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)
        )
    

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

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

    【讨论】:

    • 您好,感谢您的回复。这很像我目前正在做的事情。我只是想通过将空间数据类型与某种时间维度结合使用来发现是否有更聪明的方法。我知道它目前不受支持,但希望有人可能已经想出一种解决方法,可能使用第二个几何图形,它有时间并说距离作为轴。最终的目标是将路径作为处理单元而不是单个点。使用开始时间和结束时间是不够的,因为车辆可能会朝相反的方向行驶。
    猜你喜欢
    • 2013-03-13
    • 2011-01-06
    • 2011-06-22
    • 2010-09-27
    • 2020-11-11
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多