环境:SQL Server 2012 我正在使用在线工具,这是迄今为止唯一可以找到的工具来绘制地球上的多边形和点。 http://www.birdtheme.org/useful/googletool.html 我有两个表。一个将“区域”存储为多边形,其他表格存储点与其他内容无关,而与我的问题无关。 为了简单起见,我只是将我的场景减少为sql变量。地理数据类型与SQL Server中的几何数据类型
在下面的查询中,我将地理数据类型用于众所周知的兴趣点。 我在罗本岛周围绘制了一个多边形,罗本岛的一个点和恶魔岛的一个点。
DECLARE @robben_island geography = ('POLYGON((18.351803 -33.788421,18.382788 -33.787494,18.386736 -33.820515,18.354464 -33.822369,18.351803 -33.788421))')
DECLARE @point_in_robben_island geography= ('POINT(18.369226 -33.80554)')
DECLARE @point_in_alcatraz geography= ('POINT(-122.423401 37.827006)')
SELECT @robben_island.STContains(@point_in_robben_island) --returns 'False', but it's not what I expected
SELECT @robben_island.STContains(@point_in_alcatraz) --returns 'True', but it's not what I expected
上面这个查询,如果我理解正确的话,告诉我,我的@point_in_robben_island
不包含在@robben_island
,而我@point_in_alcatraz在@robben_island
存在哪些大家都知道,是不正确的。
现在,当我将数据类型从地理更改为几何时,一切正常,但恐怕如果继续使用几何数据类型,我可能会遇到一些疑难问题。我只是想知道,如果我不会受到几何不能完全解释地球曲率的事实的消极影响。碰木头。
DECLARE @robben_island geometry = ('POLYGON((18.351803 -33.788421,18.382788 -33.787494,18.386736 -33.820515,18.354464 -33.822369,18.351803 -33.788421))')
DECLARE @point_in_robben_island geometry= ('POINT(18.369226 -33.80554)')
DECLARE @point_in_alcatraz geometry= ('POINT(-122.423401 37.827006)')
SELECT @robben_island.STContains(@point_in_robben_island) --returns 'True' as it should
SELECT @robben_island.STContains(@point_in_alcatraz) --returns 'False' as it should
现在我的问题是,为什么地理数据类型返回意外的结果,而几何按预期工作?非常感谢你。
非常感谢您的回复。我会测试这一点,并让你知道。非常感激。 – Thato
这项工作? – psousa
这效果更好。非常感谢。 – Thato