删除多边形外部的几何数据

问题描述 投票:0回答:1

我正在创建一个SQL Server表,如果它位于SITES_TEST层内,则从OS MasterMap层获取数据。

首先,我使用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。 Blue boundary is my site layer

在SQL Server中运行上述查询后,它将返回重叠数据以及包含的数据。我知道我可以使用STContains,但是这会留下边界内外的数据。

enter image description here

我希望我能够使用STDifference在ASSETS表上运行UPDATE。

UPDATE ASSETS(GEOMETRY) 
        (select b.GEOMETRY from 
              SITES_TEST a,
              MM_TOPO b
              where a.geometry.STDifference(b.geometry)=1) 

但我认为我的方法是错误的,因为这会返回一个布尔错误。

数据类型的运算符无效。运算符等于,键入等于几何。

简介:我正在尝试删除另一个几何体之外的几何体。第一张图显示了一个蓝色多边形,然后运行了SQL脚本,从而产生第二张图片,该图片显示红色的数据,该数据位于第一张图片的蓝色边界多边形之外。我想删除现在蓝色多边形之外的数据。

sql-server database gis ogc
1个回答
1
投票

而不只是要求几何形状intersect感兴趣的多边形,它返回所有相交的几何(如你所知),你只需要parts of the geometry that intersect你感兴趣的多边形。所以类似于:

INSERT INTO ASSETS(GEOMETRY, THEMES) 
    (select b.GEOMETRY.STIntersection(a.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')) 
© www.soinside.com 2019 - 2024. All rights reserved.