SQL 服务器:GPS 坐标距离使用计算列
SQL Server: GPS Cordinates distance USING calculated column
我有一个 table,我要在每条记录上插入 GPS 坐标 (lat/lon)。
table 模式如下:(Id, Time, Lat, Lon)
是否可以使用计算列计算两个连续记录的距离?
模式变成这样的东西:(Id, Time, Lat, Lon, Distanceof( ID -1, ID ))
注意:我知道如何计算两点的距离,但我不知道是否可以访问计算列上的多行数据。
在计算列定义中不能直接使用其他行的值,但可以创建一个用户自定义函数并使用它:
CREATE FUNCTION dbo.CalcDistance(@prev_row_id INT, @row_id INT)
AS
...
然后将计算列表达式定义为dbo.CalcDistance(Id - 1, Id)
。
您可以创建一个函数 Distanceof 来计算距离。
你可以 select 作为
Select 来自 table 的 id、time、Lat、Lon、Distanceof(Lat, Lng,radius)。
它将计算每一行。但是如果你做很多行会很耗时
我有一个 table,我要在每条记录上插入 GPS 坐标 (lat/lon)。
table 模式如下:(Id, Time, Lat, Lon)
是否可以使用计算列计算两个连续记录的距离? 模式变成这样的东西:(Id, Time, Lat, Lon, Distanceof( ID -1, ID ))
注意:我知道如何计算两点的距离,但我不知道是否可以访问计算列上的多行数据。
在计算列定义中不能直接使用其他行的值,但可以创建一个用户自定义函数并使用它:
CREATE FUNCTION dbo.CalcDistance(@prev_row_id INT, @row_id INT)
AS
...
然后将计算列表达式定义为dbo.CalcDistance(Id - 1, Id)
。
您可以创建一个函数 Distanceof 来计算距离。 你可以 select 作为
Select 来自 table 的 id、time、Lat、Lon、Distanceof(Lat, Lng,radius)。 它将计算每一行。但是如果你做很多行会很耗时