【问题标题】:How can I create and calculate distance table using location table?如何使用位置表创建和计算距离表?
【发布时间】:2013-11-25 22:50:16
【问题描述】:

我在 SQL 中有一个 TruckLocation 表。

Select top 4 *
from TruckLocation
order by ReadTime desc

结果:

OID      TruckID    Lat     Lng          Speed            ReadTime
123       33      37.4060    37.1470         58           2013-11-26 00:39:00.000
334       23      40.735     35.8159         90           2013-11-26 00:33:00.000
123       33      37.4060    37.1470         58           2013-11-26 00:31:00.000
334       23      42.735     36.3159         85           2013-11-26 00:27:00.000

我想创建一个新表或存储过程结果是这样的:

  Time           TruckID      TotalDistance(KM) 
  2013-11-26     23           125,1245484
  2013-11-25     23           123,1245484
  2013-11-24     23           43,1245484
  2013-11-23     23           434,1245484
  2013-11-22     23           56,1245484
  2013-11-21     23           85,1245484
  .              .             .
  .              .             .
  .              18            1215,4544
  .              .             .

我试过了,但我失败了。

【问题讨论】:

    标签: sql sql-server-2008 stored-procedures sqlgeography


    【解决方案1】:

    我还没有创建表结构来验证这一点,但可能会使用以下内容:

    DECLARE @g geography;
    DECLARE @h geography;
    SET @g = geography::STGeomFromText('POINT(40.735 35.8159)', 4326);
    SET @h = geography::STGeomFromText('POINT(42.735 36.3159)', 4326);
    --SELECT @g.STDistance(@h);
    
    SELECT CONVERT(DATETIME, CAST(readtime AS VARCHAR(11)),103), truckid, @g.STDistance(@h)
    FROM [trucklocation]
    GROUP BY readtime
    

    这使用 SQL Server 2008 的内置地理支持。

    您可以在此处阅读 STGeomFromText http://technet.microsoft.com/en-us/library/bb933834(v=sql.100).aspx 你可以在这里阅读 STDistance http://technet.microsoft.com/en-us/library/bb933808(v=sql.100).aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-16
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-10
      • 2018-12-04
      相关资源
      最近更新 更多