在SQL Server中用多边形查找坐标

问题描述

在这里碰到了墙,这应该很简单,但是我似乎无法使其正常工作。我已经从shapefile(取自GIS)中将多个多边形加载到sql Server数据库中。我有一个表,其中存储了以十进制存储的纬度和经度列表。我要做的就是返回每个坐标所在的多边形的ID(或者,如果坐标不完全位于每个坐标中,则返回最接近的那个),

我尝试了几件事,例如:

SELECT A.Id,B.Id 
FROM dbo.TableA A 
JOIN dbo.TableB B ON A.geometryColumn.STIntersects(B.geom27700) = 1;

SELECT A.Id,C.Id 
FROM dbo.TableA A 
CROSS APPLY (SELECT TOP 1 Id FROM dbo.TableB B 
             WHERE A.geometryColumn.Stdistance(B.geom27700) IS NOT NULL 
             ORDER BY A.geometryColumn.Stdistance(B.geom27700) ASC) C;

都不返回任何值。涉及的数据类型为:

geometryColumn AS geometry::STPointFromText('POINT ('+convert(varchar(20),LocationLong)+' '+convert(varchar(20),LocationLat)+')',0)

geom27700 geometry

谁能看到我要去的地方或我可以做些什么来解决?这是用于sql Server 2012

谢谢

亚历克斯

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)