· 8 years ago · Aug 02, 2018, 10:48 AM
1CREATE TABLE dbo.GeometryTest
2(
3 id int PRIMARY KEY CLUSTERED NOT NULL,
4 temppos geometry NOT NULL
5)
6
7CREATE SPATIAL INDEX IX_temppos ON dbo.GeometryTest (temppos)
8USING GEOMETRY_AUTO_GRID WITH (
9 BOUNDING_BOX = (
10 0, 0, 1000, 1000
11 )
12)
13
14;
15WITH
16 L0 AS (SELECT c FROM (SELECT 1 UNION ALL SELECT 1) AS D(c)),
17 L1 AS (SELECT 1 AS c FROM L0 AS A CROSS JOIN L0 AS B),
18 L2 AS (SELECT 1 AS c FROM L1 AS A CROSS JOIN L1 AS B),
19 L3 AS (SELECT 1 AS c FROM L2 AS A CROSS JOIN L2 AS B),
20 L4 AS (SELECT 1 AS c FROM L3 AS A CROSS JOIN L3 AS B),
21 L5 AS (SELECT 1 AS c FROM L4 AS A CROSS JOIN L4 AS B),
22 Nums AS (SELECT ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS n
23 FROM L5)
24INSERT dbo.GeometryTest SELECT TOP 100 n, geometry::STPolyFromText(CONCAT('POLYGON ((',n*10,' ',n*10,',',n*10+15,' ',n*10,',',n*10+15,' ',n*10+15,',',n*10,' ',n*10+15,',',n*10,' ',n*10,'))'), 0) FROM Nums
25
26SELECT * FROM dbo.GeometryTest a INNER JOIN dbo.GeometryTest b ON b.temppos.STOverlaps(a.temppos) = 1
27
28IF EXISTS (SELECT 1 WHERE OBJECT_ID('dbo.GeometryTest') IS NOT NULL) DROP TABLE dbo.GeometryTest