我在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]);
也失败了
答案 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