就像@TimBiegeleisen和@RobertRodkey說,它是一個老同學的公式計算地球上兩點之間的距離。
因此,這導致了一些其他問題:
- 問:不SqlServer的具有可用的地理空間的方法呢? - 答:是的 SQL服務器版本2008和更高版本。
- 問:如果Sql使用
Geography
方法有這個可用,我應該使用上面的數學嗎? - 答:沒有如果你在Sql Server 2008或更高版本。如果在此之前,那麼你別無選擇,但你必須使用這種方式/公式。
- 問:Narwhales,海洋獨角獸? - 答:是的。
而且炫耀提示 - 使用STDistance ..這是你的朋友:)
(瀏覽器的代碼,沒有測試等)...
-- Arrange.
DECLARE @longitude1 FLOAT = -122.360,
@latitude1 FLOAT = 47.656,
@longitude2 FLOAT = -122.343,
@latitude2 FLOAT = 47.656;
DECLARE @point1 GEOGRAPHY = GEOGRAPHY::STGeomFromText('POINT(' + CAST(@longitude1 AS VARCHAR(10)) + ' ' + CAST(@latitude1 AS VARCHAR(10)) + ')', 4326);
DECLARE @point2 GEOGRAPHY = GEOGRAPHY::STGeomFromText('POINT(' + CAST(@longitude2 AS VARCHAR(10)) + ' ' + CAST(@latitude2 AS VARCHAR(10)) + ')', 4326);
-- Determine the distance (which would be in metres because we're using the 4326 == [common GPS format](http://spatialreference.org/ref/epsg/wgs-84/)).
SELECT @point1.STDistance(@point2);
嚴格地說,我相信它是球形餘弦式。另外,如果你使用SQL服務器,爲什麼不使用Geography類呢? https://msdn.microsoft.com/en-gb/library/microsoft.sqlserver.types.sqlgeography.aspx –