Я хочу знать, какой алгоритм использует SQL2008 при расчете расстояния для типов данных географии.
Существует несколько таких алгоритмов, как Haversine и Vincenty, однако я не нашел ссылок на то, что SQL2008 фактически использует.
Я думаю, что вы заинтересованы в типе географии и как он рассчитывает расстояние. Эта глава может помочь (как и этот блог) http://blogs.msdn.com/edkatibah/archive/2009/12/17/inside-microsoft-sql-sever-2008-t-sql-programming-chapter-14-spatial-data.aspx
Существует также MS SQLSpatialTools на Codeplex. Их функции интерполяции для типов географии могут дать вам подсказку, что они делают под капотами
http://sqlspatialtools.codeplex.com/wikipage?title=Current%20Contents&referringTitle=Home
Могу ли я спросить, почему вас волнует, какая функция используется, если ответ правильный?
Он полностью зависит от Идентификатора пространственной привязки , связанного с типом географии.
SRID представляет, какие именно единицы в типе географии, и будет определять систему координат. Эта система будет указывать, какие алгоритмы используются.
При этом SQL Server 2008 поддерживает только определенный набор SRID (см. Раздел «Географические экземпляры должны использовать поддерживаемые SRID» в приведенной выше ссылке) при выполнении вычислений для экземпляров географии.
Вы, вероятно, можете получить больше информации о спецификации, которую SQL Server 2008 использует для типов географии / геометрии, Спецификация простого доступа к функциям Open Geospacial Consortium .
Кажется, что вас действительно волнует, так это то, как SQL Server вычисляет расстояние, но как он фактически определяет расстояние на земле, поскольку существует много альтернативных определений. Лучшим примером для этого является статья Майкла Каллая Определение краев на круглой земле .
Исаак Кунен также написал официальный документ о представлении круглых поверхностей в 2d координатах, что является превосходным хорошим фоновым чтением.