До SQL 2008 наиболее распространенным решением было использование UDF для вычисления расстояния между двумя точками на сфере. Формула Хаверсайна , вероятно, является наиболее часто используемым методом.
Конечно, Земля на самом деле не является идеальной сферой, но это считалось "достаточно хорошим" для большинства применений.
В SQL 2008, как вы и ожидали, такие вычисления упрощаются и становятся более точными благодаря введению типов данных Geography и Geometry.Вот краткий пример того, как вы можете использовать их для упрощения расчетов расстояний.
DECLARE @locations TABLE(locname VARCHAR(100), coord geography)
DECLARE @loc1 geography
DECLARE @loc2 geography
INSERT INTO @locations
VALUES('HOME', geography::Point(-81.810194, 41.478156, 4326)) --Note: Lat, Long, SRID
--The 4326 is the SRID (spatial reference id) used by SQL as
--a reference to the WGS 84 Standard. This is the same reference
--used by the GPS system
INSERT INTO @locations
VALUES('WORK', geography::Point(-81.687771, 41.498227, 4326))
SELECT * FROM @locations
SELECT @loc1 = coord FROM @locations WHERE locname = 'HOME'
SELECT @loc2 = coord FROM @locations WHERE locname = 'WORK'
SELECT @loc1.STDistance(@loc2) * 3.2808399 --STDistance is in meters so we multiply to convert to feet
SRID - ключ к повышению точности.Спецификация WGS 84 , к которой она относится, включает в себя стандартизированную систему координат и эталонный эллипсоид.Другими словами, это объясняет несферическую природу Земли, давая лучшие результаты, чем чисто сферический расчет Великого круга.
Если точность ГИС важна для вашей работы, это самый простой способ реализовать ее в SQL 2008.