我有两张表,一张以点作为地理,另一张以多边形作为地理。我可以通过以下查询找到单个点落在哪个多边形(从点表中):
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;
但是,我想在两个表之间进行连接并获取点表中每个点所在的多边形。有可能吗?或者我是否需要循环遍历点表并多次调用上述查询?
这应该有效:
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(...))”,因为这将加快查询速度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)