为什么这个几何点不与多边形相交?

时间:2013-07-10 19:56:24

标签: sql-server-2008 spatial sqlgeography

为什么这个几何点不与多边形相交?我知道这个点存在于给定的多边形中。它返回0的原因是什么?

DECLARE @point geometry 
DECLARE @poly geometry

SET @point = geometry::STGeomFromText('POINT (-79.393967 43.640056)', 4326)

DECLARE @minY varchar(20) = N'-79.37776573850101'
DECLARE @maxY varchar(20) = N'-79.41055306149906'
DECLARE @minX varchar(20) = N'43.63590433545648'
DECLARE @maxX varchar(20) = N'43.64460037532088'

DECLARE @boundingRect varchar(250)
SET @boundingRect = 'POLYGON((' + @minX + ' '  + @minY + ', ' + 
                                                   @maxX + ' ' + @minY + ', ' + 
                                                   @maxX + ' ' + @maxY + ', ' + 
                                                   @minX + ' ' + @maxY + ', ' + 
                                                   @minX + ' ' + @minY + '))'

SET @poly = geometry::STGeomFromText(@boundingRect, 4326)

SELECT @point.STIntersects(@poly)

3 个答案:

答案 0 :(得分:2)

我不熟悉这种SQL符号,所以我可能会偏离基础,但我看到你的X值似乎与纬度43N相关,Y与经度79W相关联。但是,您的POINT条目可能会颠倒过来吗?

答案 1 :(得分:0)

只是一个想法:一个点何时与多边形相交?如果它位于多边形内?不可以。只有它直接位于多边形的一个边缘上,对吗? 尝试此操作:将点与多边形相交,该多边形直接位于多边形的一条边上。如果它返回else,则返回0,你有答案。

答案 2 :(得分:0)

该点应声明为:

SET @point = geometry::STGeomFromText('POINT (43.640056 -79.393967)', 4326)

然后,Intersect会显示您期望的结果:1