对充满空间特征的 table 执行 Sql 服务器空间交集?

Perform a Sql Server Spatial Intersection against a table full of spatial features?

我在 sql 2015 年有一个 table,它有一个几何列和大约 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 table 中的所有功能进行比较怎么办?

如果上面相交的结果是 1,那么我知道 @a 几何图形与它相交的 @b 几何图形。这样可行。 但是,如果我将@b 更改为:

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

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

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

同样失败

声明@a几何;声明@b几何;

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 * 来自 [GIS].[ggon].[blah] WHERE [Shape].STIntersects(@a) = 1