2012-06-28 53 views
0

可能重複:
SQL Server 2008 Spatial: find a point in polygonSQL服務器 - 從經度和緯度幾何數據類型

我對使用一個SQL Server 2008數據庫的應用程序的工作。在這個數據庫中,我有一個名爲Session的表,它有兩個字段經度和緯度,它們表示用戶的位置。在另一個名爲Zone的表格中,我有一個幾何類型的區域屬性。如何檢查用戶的經度和緯度座標是否屬於某個幾何圖形?

謝謝

+1

請參閱[此SO問題] [1]的答案。 [1]:http://stackoverflow.com/questions/11054149/sql-server-2008-spatial-find-a-point-in-polygon –

+1

答案合併了地理和幾何 - 附註答案稍微解決了一些問題,但並沒有真正解釋爲什麼SQL使用不相稱的不同數據類型。 –

回答

2

你有一個幾何形狀,它存儲在歐幾里得幾何形狀,並且要在地球上的一個點,由緯度和經度表示關聯,有了它,看它是否是內部。由於SQL存儲數據的方式,這不起作用。您可能需要使用地理數據類型來檢查這一點 - 經度和緯度是球體上的點(實際上是大地測量數據,因爲地球不是球體)。

有關它們爲什麼不同的更多信息,請參閱this explanation from microsoft 。同樣在計算器這樣的回答:GEOMETRY and GEOGRAPHY difference SQL Server 2008

要將數據從幾何地理轉換,嘗試: 地理:: STGeomFromText(CAST(GeomCol爲varchar(最大)),4326)

然後你就可以使用STIntersects方法,由microsoft here記錄。

+0

非常感謝David的快速回答和附加信息。 –