2015-07-20 3 views
2

У меня есть таблица в sql 2015, у которой есть геометрия и около 10 000 записей. Я хочу проверить, если новая запись, о которой я думаю, добавляет перекрытие любой из существующих записей. Я знаю, что я могу сравнить две функции с STIntersects следующим образом:Выполнение пространственного пересечения Sql-сервера против таблицы, полной пространственных функций?

DECLARE @a geometry; DECLARE @b geometry;

SET @a = ГЕОМЕТРИЯ :: STPolyFromText ('ПОЛИГОН ((- 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 быть:..

ВЫБРАТЬ @b = [Форма] FROM [ГИС] [ggon] [бэ]

тогда я получаю 0 - которая не является исправить

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

также не

+0

где @ a.intersects (Mycol)? – usr

ответ

2

DECLARE геометрию @a; DECLARE @b geometry;

SET @a = ГЕОМЕТРИЯ :: STPolyFromText ('ПОЛИГОН ((- 10277454,3014 +4527261,7601, -10277449,1674 +4527236,5722, -10277503,1433 +4527245,177, -10277462,2333 +4527281,9267, -10277454,3014 +4527261,7601))', 3857);

SELECT * FROM [ГИС]. [Ggon]. [Л] где [Shape] .STIntersects (@a) = 1

Смежные вопросы