【发布时间】:2015-11-24 09:56:37
【问题描述】:
我有一个表格,我在每条记录上插入 GPS 坐标(纬度/经度)。
表模式如下:(Id, Time, Lat, Lon)
是否可以使用计算列计算两个连续记录的距离? 架构变成这样的东西:(Id,Time,Lat,Lon,Distanceof(ID -1,ID))
注意:我知道如何计算两点的距离,但我不知道是否可以访问计算列上的多行数据。
【问题讨论】:
标签: sql-server gps calculated-columns
我有一个表格,我在每条记录上插入 GPS 坐标(纬度/经度)。
表模式如下:(Id, Time, Lat, Lon)
是否可以使用计算列计算两个连续记录的距离? 架构变成这样的东西:(Id,Time,Lat,Lon,Distanceof(ID -1,ID))
注意:我知道如何计算两点的距离,但我不知道是否可以访问计算列上的多行数据。
【问题讨论】:
标签: sql-server gps calculated-columns
在计算列定义中不能直接使用其他行的值,但是可以创建一个用户定义的函数并使用它:
CREATE FUNCTION dbo.CalcDistance(@prev_row_id INT, @row_id INT)
AS
...
然后定义计算列表达式为dbo.CalcDistance(Id - 1, Id)。
【讨论】:
您可以创建一个函数 Distanceof 来计算距离。 你可以选择为
从表格中选择 id, time, Lat,Lon, Distanceof(Lat, Lng,radius)。 它将为每一行计算。但是如果你做很多行会很耗时
【讨论】: