我想知道SQL2008在计算地理数据类型的距离时使用的算法。
有很多像Haversine和Vincenty这样的算法,但我没有找到SQL2008正在使用的参考资料。
答案 0 :(得分:1)
完全取决于与地理类型相关联的Spatial Reference Identifier。
SRID代表地理类型中的单位究竟是什么,并将指示坐标系。该系统将指示正在使用哪些算法。
话虽这么说,在执行地理实例计算时,SQL Server 2008仅支持一组SRID(请参阅上面链接中标题为“地理位置实例必须使用支持的SRID”的部分)。
您可以从SQL Server 2008用于地理/几何类型的规范Open Geospacial Consortium's Simple Feature Access specification中获取更多信息。
答案 1 :(得分:1)
我认为您对地理类型以及它如何进行距离计算感兴趣。 本章可能会有所帮助(以及此博客) 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
只要答案是对的,我能问你为什么关心使用什么功能?
答案 2 :(得分:0)
现在看来你真正关心的是SQL Server如何计算距离,但它实际上如何定义地球上的距离,因为有许多替代定义。最好的参考是Michael Kallay撰写的论文Defining edges on a round earth。
Isaac Kunen还写了一篇关于在2d坐标中表示圆形曲面的whitepaper,这是非常好的背景阅读。