I have 2 tables one with points as geographies and other with polygons as geographies. I am able to find which polygon a single point falls(from the point table) by the following query:
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;
However, I want to do a join between the two tables and g开发者_开发技巧et the polygons in which each of the points in the Point Table fall. Is it even possible? Or do I need to loop through the Point table and call the above query multiple times?
This should work:
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
I have added an index hint " WITH(INDEX(...)) " as this will speed up the query.
精彩评论