Просто чтобы охватить людей, прибывающих сюда в поисках ответа при использовании STDistance с типами GEOMETRY, результат «выражается в той же единице измерения, что и сами значения координат» (из «Начиная с пространственного с SQL Server 2008»), которая для Данные WGS84 / SRID 4326 в градусах.
Следующий SQL должен работать на SQL Server 2008 R2 и выше. (Источник данных о местоположении для карт Bing станций Эдинбург-Уэверли и Лондон-Чаринг-Кросс):
DECLARE @edinGeom GEOMETRY = GEOMETRY::STGeomFromText('POINT(-3.1917 55.9517)', 4326)
DECLARE @cxGeom GEOMETRY = GEOMETRY::STGeomFromText('POINT(-0.1252 51.5083)', 4326)
SELECT @edinGeom.STDistance(@cxGeom), sqrt(square(3.1917-0.1252) + square(55.9517-51.5083)) AS 'Distance from Pythagoras';
DECLARE @MetersPerMile FLOAT = 1609.344;
DECLARE @edinGeog GEOGRAPHY = GEOGRAPHY::STGeomFromText('POINT(-3.1917 55.9517)', 4326)
DECLARE @cxGeog GEOGRAPHY = GEOGRAPHY::STGeomFromText('POINT(-0.1252 51.5083)', 4326)
SELECT @edinGeog.STDistance(@cxGeog), @edinGeog.STDistance(@cxGeog)/@MetersPerMile;
Результаты для первых 3 строк, использующих типы GEOMETRY:
STDistance Geom: 5.39881707506376, Расстояние от Пифагора: 5.39881707506376
Результаты для типов GEOGRAPHY:
STDistance Geog: 534226.761544321, Пересчитано в милях: 331.953119745885
«331 миль» или около того из расчета ГЕОГРАФИЯ с преобразованием хорошо согласуется с показанным на картах Bing как расстояние между двумя точками (ясно, что это не является доказательством чего-либо, но предполагает аналогичные базовые вычисления).
Числа, выведенные вычислением GEOMETRY, мы надеемся продемонстрировать, что результат очень четко выражен в градусах, причем значение, очевидно, рассчитывается с использованием пифагора (базовые вычисления были бы более сложными, если бы мы получали расстояние между точками и полигонами).