在Oracle中剪切多边形

oracle clip polygons oracle-spatial

744 观看

2回复

47 作者的声誉

我在表2中有一个多边形,其id,no和geometry。在表1中,我有多个具有相同字段的多边形。table2中的多边形与表1中的几个多边形相交。我想要做的是剪切多边形,它与表2中的多边形重叠,并在表3中插入相同的字段和几何。所以如果表2中的多边形有2个重叠我想摆脱那些重叠并将其余部分放到一个新表中。下面的代码用于返回几何体的剪切部分。如何在剪辑完成后获得多边形的几何体。

insert into table 3  
select a.store_id,b.store_id,a.store_number,a.client_id,sdo_geom.sdo_intersection(b.geometry,a.geometry,0.005)  
from table_1 a, table_2 b  
where b.store_id=34746  
and sdo_anyinteract(b.geometry,a.geometry)='True';  
作者: Nathan 的来源 发布者: 2013 年 11 月 25 日

回应 (2)


1

1657 作者的声誉

决定

sdo_geom.sdo_intersection您可能想要使用sdo_geom.sdo_difference- 而不是使用- 这可以作为减号操作:

在此输入图像描述

作者: Ben 发布者: 26.11.2013 10:36

0

11 作者的声誉

我想你试图剪切一个具有多个几何形状的几何体?sdo_difference仅允许1(单个)几何实体剪切另一个(单个)几何实体。

我有类似的要求,并用sdo_aggr_union解决了它。现在它是12c中Oracle Locator的一部分。

    with minisegs as (
    SELECT seg.seg_cnn cnn,SDO_GEOM.SDO_DIFFERENCE(seg.shape,(
        select SDO_AGGR_UNION(SDOAGGRTYPE(node.geometry, 0.005))
        from node_poly node 
        where SDO_RELATE(node.geometry,seg.shape,  'mask = anyinteract') = 'TRUE')) geom
    from mv_act_segs seg) 
 select cnn,sdo_geom.sdo_length(geom,0.01) len, geom from minisegs
    where geom is not null 
    and sdo_geom.sdo_length(geom,0.01)>5

这是在两端剪切线段节点(点)缓冲区。在这种情况下,我需要从多个对象创建一个几何对象,以使sdo_difference工作。对于后续过程,我需要过滤掉短/空段。

作者: Greg Braswell 发布者: 24.10.2018 02:40
32x32