有人可以確認這是一個錯誤還是我做錯了?SQL Server地理中的錯誤?
我有這個存儲過程(SQL Server 2008中)
ALTER PROCEDURE [dbo].[Distance]
@origin varchar(50),@destination varchar(50),@unit varchar(5)
as
declare @or geography, @dest geography
SET @or = (select Location from [dbo].Promotion where [email protected])
SET @dest = (select Location from [dbo].Promotion where [email protected])
IF @unit='miles'
SELECT @or.STDistance(@dest)/1609.344
ELSE
--Else show the distance in km
SELECT @or.STDistance(@dest)/1000
位置是在數據庫
地理數據類型,而且我在數據庫
Latitude Longitude
1 -34.612654 -58.463586
2 -34.592802 -58.454317
3 -34.597889 -58.617949
已經這個地址,然後運行這個:
execute dbo.Distance 'Number 1','Number 2','km'
returns 2653.49845233371 kms
execute dbo.Distance 'Number 1','Number 3','km'
returns 17.2155414117145 kms
如果您在第一種情況下訪問Google地圖,那麼座標距離這些座標約爲4公里,而第二個比較似乎沒有問題。
爲什麼第一個是如此錯誤?這是SQL Server中的錯誤嗎?
在此先感謝。吉列爾莫。
使用大型應用程序的第一條規則是數百萬人使用 - 該錯誤在您的代碼中。第二條規則 - 該錯誤在您的代碼中。第三條規則....你有這個想法;) – Jamiec
我假設位置是一個計算列,基於緯度和經度列?如果是這樣,你能給它的定義嗎? (如果你可以創建一個簡單的表,使用INSERT來填充你的樣本數據,並且用一個簡單的查詢來產生結果,那麼其他人就可以重現這個結果會容易得多) –