2009-11-11 107 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