Для того чтобы покрыть людей, прибывающих сюда, ища ответ при использовании STDistance с типами GEOMETRY, результат «выражается в той же единице измерения, что и сами значения координат» (от «Начальный пространственный с SQL Server 2008»), который для данных WGS84/SRID 4326 находится в градусах.
Следующий SQL должен работать на SQL Server 2008 R2 и выше. (Источник данных местоположения для Эдинбурга Уэверли и Лондона Charing Cross станции bing maps):
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 линии с использованием типов геометрии:
STDistance геом: +5,39881707506376, Расстояние от Пифагора: 5,39881707506376
Результаты для типов географии:
STDistance GEOG: +534226,761544321, Преобразованные до миль: 331.953119745885
«331 миля» или около того из расчета GEOGRAPHY с показателями на картах Бинга как расстояния между двумя точками (очевидно, это не доказательство чего-либо, но оно предполагает аналогичные базовые вычисления).
Числа, выводимые на основе расчета GEOMETRY, надеются показать, что результат очень четко выражен в градусах, причем значение, по-видимому, вычисляется с использованием pythagoras (базовые вычисления были бы более сложными, если бы мы получали расстояние между точками и полигонами).