Я пытаюсь определить, находится ли точка внутри многоугольника. Результаты, о которых я возвращаюсь, всегда возвращаются 1 независимо от того, находится ли точка в пределах границы или нет.SQL Geography Intersect всегда возвращает 1
DECLARE @point GEOGRAPHY = GEOGRAPHY::Point(54.2225,-4.5366, 4326)
DECLARE @polygon GEOGRAPHY = GEOGRAPHY::STGeomFromText('POLYGON((54.2826 -4.4420, 54.2904 -4.6564, 54.0467 -4.7031, 54.2826 -4.4420))', 4326)
SELECT @polygon.STIntersects(@point), @point.STIntersects(@polygon)
Я использую SQL Express 2014 работает локально
Спасибо за ответ - это имеет большой смысл. Я использую следующий код, но все равно получаю возвращаемое значение '0' 'DECLARE @point GEOGRAPHY = GEOGRAPHY :: Point (54.1826, -4.5420, 4326) --INSIDE --DECLARE @point GEOGRAPHY = ГЕОГРАФИЯ :: Точка (57.1826, -3.5420, 4326) --OUTSIDE DECLARE @polygon ГЕОГРАФИЯ = ГЕОГРАФИЯ :: STGeomFromText ('POLYGON ((54,2826 -4,4420, 54,2904 -4,6564, 54,0467 -4,7031, 54,2826 -4,4420)), 4326) если @ polygon.EnvelopeAngle() = 180 \t комплект @polygon = @ polygon.ReorientObject(); SELECT @ polygon.STContains (@point) ' – Braydie
Вам понравится: метод' POINT() 'принимает аргументы в противоположном порядке WKT, которые вы предоставляете для многоугольника! То есть, как вы это определили, вы переключили широту и долготу. Проверьте 'SELECT @ polygon.STPointN (1). [Lat], @point. [Lat]' –
Ах, вау, я бы никогда этого не нашел! Еще раз спасибо! Я изменил порядок моих коордов в cторе Точки, но, похоже, все равно получаю нуль ... Мой мозг сейчас немного озадачен, но я не думаю, что это правильно ..? – Braydie