2009-11-11 83 views
0

我已經使用Manifold將ESRI shapefile導出到SQL Server 2008,這給了我一個類型爲Geometry的「Shape」列。該歧管.prj文件看起來像這樣SQL Server空間數據類型

GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]], 
PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] 

所以我假設SRID是4326?然而,當我運行此查詢我希望它返回美國,但我沒有得到任何行:

DECLARE @lat float 
DECLARE @long float 
DECLARE @g geometry 

SET @lat = 40.0 
SET @long = -90.0 
SET @g = geometry::Point(@lat,@long,4326); 

SELECT * FROM Countries WHERE Shape.STContains(@g) = 1; 

我已經測試過,工作這麼一些其他查詢我猜SRID是錯誤的?如果那應該是這種情況,我如何得到正確的?

回答

2

問題解決:參數的正確順序是geometry::Point(long,lat,SRID)。我雖然它會是緯度,長,SRID ..

+0

你必須特別注意SQL Server中的參數排序。我相信x,y排序在幾何和地理之間是不同的(或者是在beta版本中)。 – 2009-11-17 21:38:31