Пространственный запрос (поиск точек в многоугольнике) ничего не возвращает, когда должен - PullRequest
0 голосов
/ 02 июля 2019

Первый постер!У меня есть определенный замкнутый многоугольник с набором координат, которые я нарисовал на картах Google и определил в запросе SQL.У меня есть база данных, которая содержит атрибут формы (я не уверен, является ли это геометрией или типом географии, но я пробовал оба типа).

Я пытаюсь получить все записи в таблице базы данных, где фигура находится внутри многоугольника (координаты широты и долготы тоже будут в порядке).Я ничего не получаю, когда есть точки внутри и за пределами многоугольника.Запуск WHERE @g.STIntersects(Shape) = 0 также ничего не выбирает, поэтому я уверен, что это не проблема ориентации оболочки.

Я использую SQL Server 2012. Я пробовал ST Contains и ST Intersects, а такжепопытался взять необработанные координаты, добавив новый столбец геометрических точек по широте и долготе и увидев, пересекаются ли они с моим многоугольником, но возникает та же проблема.Различные другие посты были похожи, но не достигли корня моей проблемы.

DECLARE @g geometry = geometry::STGeomFromText('polygon ((
-123 45, 
... 
-123 44
-123 45 ))', 4326);

SELECT *
FROM [Database file].[schema name].[table name]
WHERE @g.STIntersects(Shape) = 1

Я должен получить список точек, которые находятся внутри многоугольника, и я ничего не получаю, даже если ручная проверка координат показываетчто некоторые точки есть, а некоторые нет в многоугольнике

1 Ответ

0 голосов
/ 02 июля 2019

Я выяснил, в чем проблема: по-видимому, SRID файлов форм, которые были в моей базе данных, не был 4326, но это было другое странное значение.Из-за этого функция STIntersects возвращала NULL для всего, а не 0 или 1.

Я обещаю, что потратила гораздо больше времени на решение проблемы перед публикацией, чем час, который потребовался после моего сообщения, чтобы я понялэто самостоятельно.

...