【发布时间】:2011-05-23 14:44:58
【问题描述】:
目前我有一张看起来像这样的桌子
_ID DeviceID Timestamp Latitude Longitude
4 13 1.1.2011 10:00:13 30.234 24.953
5 13 1.1.2011 10:00:17 30.235 24.953
6 13 1.1.2011 10:00:20 30.235 24.954
7 14 1.1.2011 10:00:21 54.532 13.256
8 13 1.1.2011 10:00:22 30.235 24.955
9 13 1.1.2011 10:00:24 30.234 24.954
- _ID
- 主键
- int
- 设备ID
- int
- 不为空
- 时间戳
- 日期时间
- 不为空
- 纬度
- 真实
- 不为空
- 经度
- 真实
- 不为空
经过一番搜索(也在 SO 上),我会找到很多关于计算两点之间距离的解决方案。但我想计算点列表中的距离。
所以我搜索了一下,发现STLength method 似乎应该做我想做的事。问题是我需要从我拥有的点列表中构造一个几何图形,而the help page about constructing geometry instances 并没有告诉我如何做到这一点。 (至少它没有以我能理解的方式告诉它。)
谁能告诉我如何从 lat/lng 列表中创建几何图形?
更新
好的,到目前为止,我的问题中遗漏了一件事:
对于一个距离,我有 很多 点要计算(通常在 1,000 到 20,000 之间,但一到两次最多 40,000 点)。
也许我只是采取了完全错误的方法来摆脱它。因此,如果您有任何其他想法可以从数据中获取距离,请告诉我。
也不关心点的排序、添加或删除。当查询运行时,这些数据是稳定的。
回答克里斯评论: 是的,连接来自 4 - 5 - 6 - 8 - 9(由时间戳确定)。表中是不同设备的值(如 7),但可以使用 where 子句轻松排序。我想得到的距离是如果你连接上面列表中的点,你会得到的线的长度。
【问题讨论】:
-
这些点是如何相互连接的?
4是否连接到5连接到6等?您要计算的长度是多少?连接所有点的线段长度之和?
标签: sql sql-server-2008 gps