对充满空间特征的 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
我在 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