2013-11-01 22 views
2

我使用Sql server 2012和谷歌地圖客戶端,我使用SRID 3785,因爲它是地圖使用的mercator。 我使用幾何點數據類型來存儲位置。我讀幾何比地理更快。但是當我試圖計算點之間的距離以及特別是當我使用STDistance時,我得到了一個距離......以十進制度數......這很棒......但我真的需要米來顯示它們給用戶...... 因此,當你知道你的SRID時,當你知道你的地理位置準確到位時,如何將十進制度數的距離轉換爲米? 我知道與米的地理交易...但你如何從幾何距離計算得到米?我真的很想知道開發人員在地理類型出現之前是如何做的... 謝謝!Sql Server空間數據類型幾何,STDistance和單位:獲取米?

+0

您確定該SRID?當我查詢我的本地2012實例的sys.spatial_reference_systems,我沒有看到一個與該ID ... –

+0

@本圖爾 - 你不會找到那裏的SRID有兩個原因:1)因爲它應該是3857,而不是3785(http://alastaira.wordpress.com/2011/01/23/the-google-maps-bing-maps-spherical-mercator-projection/)2.)因爲sys.spatial_reference_systems表只記錄大地測量空間參考系統 - EPSG:3857是一個預計的參考系統。 –

回答

6

聽起來像是你在這裏有幾個問題:

首先,Google地圖投影的正確EPSG代碼是3857,而不是3785.請參閱我的博客文章http://alastaira.wordpress.com/2011/01/23/the-google-maps-bing-maps-spherical-mercator-projection/,瞭解代碼背後相當複雜的歷史記錄。其次,如果您正確使用該SRS,則您的座標應該已經以米爲單位。例如,倫敦大本鐘的座標(EPSG:3857)應該約爲(-13900,6710330)。如果你有像(51.5,-0.12)這樣的座標,那麼這些座標是WGS84緯度/經度,你應該使用帶有SRID的地理數據類型:4326

第三,3857是谷歌地圖使用的投影座標系顯示空間數據,但其API中的操作使用標準WGS84(SRID 4326),因此使用它來存儲數據可能有意義。

非常簡單:如果您希望以米爲單位的結果,則應使用地理數據類型(座標以度爲單位輸入)或幾何數據類型(座標以米爲單位輸入)。

1

地理數據類型的目的是爲了讓您無需任何麻煩地執行這些類型的計算。幾何數據類型用於平面,因此它所執行的計算非常簡單,這可能是爲什麼它們稍微快一點。

給定正確SRID的地理數據類型將說明地球廣告的曲率,爲您提供精確的結果。根據兩個物體之間的距離,曲率可能會導致實質性差異。

我在MSDN上發現了一個很好的解釋。看看對用戶問題的第二個迴應。有一個計算,你可以用你的STDistance結果從度轉換到米的「經驗法則」,但它不會是準確的:

http://social.msdn.microsoft.com/Forums/en-US/4f4648ef-9ef3-4a5c-974a-f34c5a325971/huge-difference-between-geography-and-geometry-results?forum=sqlspatial

相關問題