对一个充满空间特征的表执行Sql Server Spatial Intersection?

时间:2015-07-20 19:24:29

标签: sql-server spatial intersect

我在sql 2015中有一个表,它有一个几何列和大约10,000条记录。我想测试一条新记录我是否正在考虑添加任何现有记录的重叠。 我知道我可以将两个特征与STIntersects进行比较,如下所示:

  

DECLARE @a geometry;   DECLARE @b geometry;

     

SET @a = GEOMETRY :: STPolyFromText('POLYGON(( - 10277454.3014)   4527261.7601,-10277449.1674 4527236.5722,-10277503.1433 4527245.177,-10277462.2333 4527281.9267,-10277454.3014 4527261.7601))',3857);

     

SELECT @b = [Shape] FROM [GIS]。[ggon]。[blah] WHERE   OBJECTID = 4539;

     

SELECT @ a.STIntersects(@b);

但是如果我想将@a与blah表中的所有功能进行比较呢?

如果上面的交点结果为1,那么我知道@a几何与它所做的@b几何相交。这样可行。 但如果我改变@b为:

  

SELECT @b = [Shape] FROM [GIS]。[ggon]。[blah]

然后我得到一个0 - 这是不正确的

  

SELECT @ a.STIntersects(SELECT [Shape] FROM [GIS_PL]。[talon]。[MDC_WM]);

也失败了

1 个答案:

答案 0 :(得分:2)

DECLARE @a geometry; DECLARE @b geometry;

SET @a = GEOMETRY :: STPolyFromText(' POLYGON(( - 10277454.3014 4527261.7601,-10277449.1674 4527236.5722,-10277503.1433 4527245.177,-10277462.2333 4527281.9267,-10277454.3014 4527261.7601))',3857);

SELECT * FROM [GIS]。[ggon]。[blah] WHERE [Shape] .STIntersects(@a)= 1