繁体   English   中英

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

[英]Remove Geometry data that is outside of a polygon

我正在创建一个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')) 

蓝色边界是我的站点层,位于后台OS MasterMap中。 蓝色边界是我的网站层

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

在此处输入图片说明

我希望我可以使用STDifference在ASSETS表上运行UPDATE。

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

但是我认为我正在以错误的方式进行处理,因为这将返回布尔错误。

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

摘要:我正在尝试删除另一个几何之外的几何。 第一张图片显示一个蓝色多边形,然后运行SQL脚本,导致第二张图片显示红色数据,该数据位于第一张图片的蓝色边界多边形之外。 我想删除蓝色多边形外的数据。

而不是仅仅要求该几何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')) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM