小编Tha*_*ato的帖子

SQL Server中的地理数据类型与几何数据类型

环境:SQL Server 2012我正在使用一个在线工具,这是迄今为止我唯一能找到的工具,用于绘制地球上的多边形和点.http://www.birdtheme.org/useful/googletool.html 我有两张桌子.一个存储"区域"作为多边形,另一个表存储与我的问题无关的其他事项.为简单起见,我只是将我的场景减少为sql变量.

在下面的查询中,我将地理数据类型用于众所周知的兴趣点.我在罗本岛周围绘制了一个多边形,罗本岛上的一个点和恶魔城的一个点.

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
Run Code Online (Sandbox Code Playgroud)

如果我理解正确的话,上面的这个查询告诉我,我的@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 …
Run Code Online (Sandbox Code Playgroud)

sql geometry geography geospatial sql-server-2012

2
推荐指数
1
解决办法
5891
查看次数

标签 统计

geography ×1

geometry ×1

geospatial ×1

sql ×1

sql-server-2012 ×1