小编ss_*_*alk的帖子

SQL Spatial Join

我有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表并多次调用上述查询?

sql join spatial

9
推荐指数
1
解决办法
1万
查看次数

实体框架中的空间连接

我想使用 dbgeography 的“Intersects”方法(我使用的是 EF June 2011 CTP)在 LINQ 中编写一个连接语句。问题是如果我写这样的东西:

var joinQuery = from spQ in spatialTableQuery
                    join mnQ in MainQuery
                    on spQ.Polygon.Intersects(mnQ.PointGeography) equals 1
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

名称“mnQ”不在“equals”左侧的范围内。考虑交换'equals'两边的表达式。

在 SQL 中,我编写了一个类似的查询,如下所示,所以我知道 SQL 支持它:

SELECT  * FROM   Address a 
INNER JOIN  SPATIALTABLE b
WITH(INDEX(geog_sidx))
ON b.geom.STIntersects(a.PointGeography) = 1
Run Code Online (Sandbox Code Playgroud)

sql linq sql-server entity-framework spatial

5
推荐指数
1
解决办法
702
查看次数

标签 统计

spatial ×2

sql ×2

entity-framework ×1

join ×1

linq ×1

sql-server ×1