微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在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 举报,一经查实,本站将立刻删除。