環境: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