2013-07-10 6 views
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) 
+0

ли вы пытаетесь пересечь точку с полигона, который находится на одном из края? Меня интересует результат. – gartenabfall

ответ

2

Я не знаком с этим SQL записи, так что я, может быть способ покинуть базу, но я вижу, что ваши значения X, кажется, связаны с широтой 43N и Y с долготой 79W. Однако ваши записи POINT могут быть отменены?

0

Просто мысль: когда точка пересекается с полигоном? Если он лежит внутри многоугольника? Нет. Только если он лежит прямо на одном из краев многоугольника, верно?
Попробуйте следующее: Пересеките точку с помощью многоугольника, который лежит непосредственно на одном из краев многоугольника. Если он вернется еще тогда, то у вас будет ваш ответ.

0

Точка должна быть объявлена ​​как:

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

Тогда Intersect показывает результат вы ожидаете: 1

 Смежные вопросы

  • Нет связанных вопросов^_^