这是我的场景:
应用程序“A”产生与计划路线相对应的纬度和经度点。根据路线距离,它可能有数千个点。我知道 Geography 和 Geometry 数据类型,甚至认为它们与 SQL 2008 一起出现我还没有看到有人使用它们,并且不确定使用它的好场景是什么。除了应用程序“A”生成的点之外,我还需要存储应用程序“B”中与实际路线相对应的点。全部存储后,我需要找到与计划路线的偏差。
这是我的场景:
应用程序“A”产生与计划路线相对应的纬度和经度点。根据路线距离,它可能有数千个点。我知道 Geography 和 Geometry 数据类型,甚至认为它们与 SQL 2008 一起出现我还没有看到有人使用它们,并且不确定使用它的好场景是什么。除了应用程序“A”生成的点之外,我还需要存储应用程序“B”中与实际路线相对应的点。全部存储后,我需要找到与计划路线的偏差。
这可能是一个 NP 完全问题,http ://en.wikipedia.org/wiki/NP-complete 将其与旅行推销员问题进行比较,http ://en.wikipedia.org/wiki/Travelling_salesman_problem 我不确定如果它是 NP-Complete,因为我的大学课本在存储中,而且自从我的复杂性课程以来已经有一段时间了。
并不是说我们不能从@kenwilsondba 建议的表方法开始使用 SQL Server 空间数据类型来做一些简单的“漂移数学”。
更彻底的(如果不是 NP-Complete 的话)方法将寻找实际路线在其他事情中回到正轨的位置。
但是,如果我们需要的只是简单的漂移计算,我们可以使用 SQL Server 空间数据类型执行以下操作,并忽略路线回到正轨的任何路段,并假设停靠点 ID 实际上是连续的。
请注意,这种计算方法还惩罚仅在开始时偏离并且在路线的其余部分从未偏离的实际路线,并奖励那些一直保持在轨道上直到最后点的人。
另一个需要注意的是,下表设计中的字段是多余的。
默认情况下,距离计算以米为单位。
要找到以米为单位的总漂移量:
要在 SQL Server 的“空间结果”选项卡中同时显示计划的、实际的和漂移的路段:
推荐使用两张桌子。表 A 为计划路线,表 B 为实际路线。一旦您填充了两个表,您就可以在某种标识符上连接这两个表,并使用 STDistance 方法来确定偏差。在这种情况下,我认为还有许多其他方法很有用。
请参阅http://technet.microsoft.com/en-us/library/cc280766.aspx