SQL2008 中用于地理数据类型的距离算法
Posted
技术标签:
【中文标题】SQL2008 中用于地理数据类型的距离算法【英文标题】:Distance Algorithm used in SQL2008 for Geography Data Types 【发布时间】:2010-03-02 20:31:40 【问题描述】:我想知道在地理数据类型上计算距离时 SQL2008 使用什么算法。
有几种这样的算法,例如 Haversine 和 Vincenty,但是我没有找到 SQL2008 实际使用的参考。
【问题讨论】:
【参考方案1】:这完全取决于与地理类型关联的Spatial Reference Identifier。
SRID 代表地理类型中的确切单位,并将指示坐标系。该系统将指示正在使用哪些算法。
话虽如此,在对地理实例执行计算时,SQL Server 2008 仅支持一组特定的 SRID(请参阅上面链接中标题为“地理实例必须使用支持的 SRID”的部分)。
您可能可以从 SQL Server 2008 用于地理/几何类型的规范中获得更多信息,Open Geospacial Consortium'sSimple Feature Access specification。
【讨论】:
【参考方案2】:我认为您对地理类型以及它如何计算距离感兴趣。 本章可能会有所帮助(以及此博客) http://blogs.msdn.com/edkatibah/archive/2009/12/17/inside-microsoft-sql-sever-2008-t-sql-programming-chapter-14-spatial-data.aspx
Codeplex 上还有 MS SQLSpatialTools。他们对地理类型的插值函数可能会提示您他们在幕后所做的事情
http://sqlspatialtools.codeplex.com/wikipage?title=Current%20Contents&referringTitle=Home
我能问一下,只要答案是正确的,你为什么关心正在使用什么功能?
【讨论】:
嘿,谢谢你的信息。计算可能需要在法律事务中产生。 那么也许值得致电 MS 支持并让他们向您发送直接答复。另一种选择是使用 PostGIS - 1.5 支持地理类型,所有源代码都开放供您查看。【参考方案3】:看来您现在真正关心的是 SQL Server 如何计算距离,但它实际上如何定义地球上的距离,因为有许多替代定义。最好的参考是 Michael Kallay Defining edges on a round earth 的论文。
Isaac Kunen 还写了一篇whitepaper,关于在 2d 坐标中表示圆形表面,这是非常好的背景阅读。
【讨论】:
Michael Kallay 的文章似乎不是免费提供的。 OP 正在询问 SQL 服务器使用什么算法。是文森蒂吗?你能引用你链接到的论文吗?以上是关于SQL2008 中用于地理数据类型的距离算法的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2010 数据库项目无法识别 SQL 2008 地理数据类型