多个多边形上的多个点 SQL 服务器空间

Multiple points on multiple polygons SQL Server Spatial

我是 SQL 服务器空间方面的新手。

我已经 运行 在 SQL 服务器上使用 2 个空间数据库 "points"(>1m 条目)和 "polygons"(>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点到所有多边形的所有可能组合,反之亦然。 我尝试使用 group by 但效率下降了很多。

你能帮我吗? 干杯

不要交叉连接表。相反,您可以使用带有相关子查询的 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