Я создаю таблицу SQL Server, которая берет данные из уровня OS MasterMap, если он находится в слое SITES_TEST.
Сначала я использую STIntersects, чтобы получить данные OS MM на уровне ASSETS.
INSERT INTO ASSETS(GEOMETRY, THEMES)
(select b.GEOMETRY, b.THEMES from
SITES_TEST a,
MM_TOPO b
where a.geometry.STBuffer(1).STIntersects(b.geometry) = 1 AND (b.THEMES ='Land' or b.THEMES ='Roads Tracks And Paths'))
Синяя граница - это слой моего сайта и в фоновом режиме ОС MasterMap.
После выполнения вышеуказанного запроса в SQL Server он возвращает перекрывающиеся данные, а также содержащиеся в них данные. Я получаю, что могу использовать STContains, но тогда это исключает данные, которые идут как внутри, так и за ее пределами.
* +1012 *
Я надеялся, что смогу запустить UPDATE для таблицы ASSETS, используя STDifference.
UPDATE ASSETS(GEOMETRY)
(select b.GEOMETRY from
SITES_TEST a,
MM_TOPO b
where a.geometry.STDifference(b.geometry)=1)
Но я думаю, что поступаю неправильно, так как это возвращает логическую ошибку.
Неверный оператор для типа данных. Оператор равно равно, тип равно
геометрии.
Резюме:
Я пытаюсь удалить геометрию, которая находится за пределами другой геометрии. На первом рисунке показан синий многоугольник, затем запускается сценарий SQL, в результате чего на втором изображении отображаются красные данные, которые находятся за пределами синего граничного многоугольника с первого изображения. Я хочу удалить данные, которые сейчас находятся за пределами синего многоугольника.