0

为什么这个几何点不与多边形相交?我知道该点存在于给定的多边形中。它返回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)
4

3 回答 3

2

我不熟悉这个 SQL 表示法,所以我可能有点偏离基础,但我看到你的 X 值似乎与纬度 43N 相关,而 Y 与经度 79W 相关联。但是,您的 POINT 条目可能会被颠倒?

于 2013-07-10T20:20:31.290 回答
0

只是一个想法:点何时与多边形相交?如果它位于多边形内?不,只有当它直接位于多边形的边缘之一时,对吧?
试试这个:将一个点与多边形相交,该多边形直接位于多边形的其中一条边上。如果它返回 else 那么 0 你有你的答案。

于 2013-07-10T20:43:15.453 回答
0

该点应声明为:

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

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

于 2013-07-11T14:40:27.757 回答