Несколько точек на нескольких полигонах SQL Server Spatial - PullRequest
0 голосов
/ 09 ноября 2019

Я немного новичок на пространственном сервере SQL.

Я выполняю задание на сервере SQL, используя 2 "точки" пространственных баз данных (> 1 м записей) и "полигоны" (> 800 записей)

я хочу просто создать логическое поле, которое сообщает мне, попадает ли точка в многоугольник. Я перепробовал несколько вещей, но ничего убедительного или продуктивного. Запрос, который я пробовал, был:

SELECT
    points_id,
    CASE
        WHEN p1.GEOM.STWithin((p2.GEOM))=1 
        THEN 'yes' 
        ELSE 'no'
    END as results
FROM [pointsdb] p1, [polydb] p2 

результаты, которые я получаю, - это, по сути, все возможные комбинации по 1 очку для всех многоугольников и наоборот. Я пытался использовать группу, но эффективность значительно снизилась.

Не могли бы вы помочь мне в этом? веселит

1 Ответ

1 голос
/ 09 ноября 2019

Не перекрещивайте таблицы. Вместо этого вы можете использовать условие exists с коррелированным подзапросом следующим образом:

SELECT
    points_id,
    CASE 
        WHEN EXISTS (
            SELECT 1
            FROM [polydb] p2 
            WHERE p1.GEOM.STWithin((p2.GEOM))=1 
        ) 
        THEN 'yes' 
        ELSE 'no'
    END as results
FROM [pointsdb] p1 
...