SQL Spatial Join

ss_*_*alk 9 sql join spatial

我有2个表,其中一个点是地理位置,另一个是多边形作为地理位置.我可以通过以下查询找到单个点落在哪个多边形(从点表):

DECLARE @p geography;
select @p = PointGeom from dbo.PointTable where ID = 1 
SELECT  a.ID, ATTRIBUTE1, geom 
from dbo.PolygonTable  a
where geom.STIntersects(@p) = 1;
Run Code Online (Sandbox Code Playgroud)

但是,我想在两个表之间进行连接,并获得Point Table中每个点落入的多边形.它甚至可能吗?或者我是否需要遍历Point表并多次调用上述查询?

Cat*_*key 14

这应该工作:

SELECT 
    polyTable.[PolygonID]
,   pointTable.[PointID]
FROM 
[PolygonTable_Name] polyTable WITH(INDEX([SPATIAL_INDEX_NAME]))
INNER JOIN 
[PointTabl_Name] pointTable
ON
polyTable.Geog.STIntersects(pointTable.Geog) = 1
Run Code Online (Sandbox Code Playgroud)

我添加了索引提示"WITH(INDEX(...))",因为这将加快查询速度.