SQL空间连接



我有两个表,一个以点为地理位置,另一个以多边形为地理位置。我能够通过以下查询找到单个点落在哪个多边形(从点表):

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;

然而,我想在两个表之间做一个连接,并获得点表中每个点所在的多边形。这可能吗?或者我需要循环遍历Point表并多次调用上述查询吗?

应该可以:

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

我添加了一个索引提示" WITH(index(…))"因为这样可以加快查询速度。

相关内容

  • 没有找到相关文章

最新更新