У меня есть таблица (местоположения), которая имеет поле под названием Точка (геометрия).Я написал запрос, который передает координаты верхней и нижней широты и координаты нижней и верхней долготы.Я хочу получить все записи, которые находятся в области координат, которые я передаю хранимую процедуру.Когда я запускаю это, он возвращает ноль записей, хотя я знаю, что есть запись, которая соответствует критериям.Есть идеи, что я могу делать не так?
DECLARE @categoryid AS int,@leftlong AS float,@rightlong AS float,@toplat AS float,@bottomlat AS float
DECLARE @searcharea geometry, @polygon AS varchar(500);
SET @leftlong = -85.605469
SET @toplat = 42.303468
SET @rightlong = -85.594912
SET @bottomlat = 42.297564
SET @polygon = CAST(@leftlong AS varchar(20)) + ' ' + CAST(@toplat AS varchar(20)) + ',' +
CAST(@leftlong AS varchar(20)) + ' ' + cast(@bottomlat AS varchar(20)) + ',' +
cast(@rightlong AS varchar(20)) + ' ' + cast(@bottomlat AS varchar(20)) + ',' +
cast(@rightlong AS varchar(20)) + ' ' + cast(@toplat AS varchar(20)) + ',' +
CAST(@leftlong AS varchar(20)) + ' ' + CAST(@toplat AS varchar(20))
SET @searcharea = geometry::STGeomFromText('POLYGON ((' + @polygon + '))', 0);
SELECT *
FROM locations l
WHERE l.point.STWithin(@searcharea) = 1