Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle中多边形的裁剪_Oracle_Clip_Polygons_Oracle Spatial - Fatal编程技术网

Oracle中多边形的裁剪

Oracle中多边形的裁剪,oracle,clip,polygons,oracle-spatial,Oracle,Clip,Polygons,Oracle Spatial,我在表2中有一个多边形,它的id、no和几何体。在表1中,我有相同字段的多边形。表2中的多边形与表1中的几个多边形相交。我正在尝试的是对与表2中的多边形重叠的多边形进行剪辑,并在表3中插入相同的字段和几何体。因此,如果表2中的多边形有两个重叠,我想消除这些重叠,并将其余部分放入一个新表中。以下代码用于返回几何体的剪裁部分。剪裁完成后,如何获取多边形的几何体 insert into table 3 select a.store_id,b.store_id,a.store_number,a.cl

我在表2中有一个多边形,它的id、no和几何体。在表1中,我有相同字段的多边形。表2中的多边形与表1中的几个多边形相交。我正在尝试的是对与表2中的多边形重叠的多边形进行剪辑,并在表3中插入相同的字段和几何体。因此,如果表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';  

您可能希望使用
sdo_geom.sdo_差分
,而不是使用
sdo_geom.sdo_交点
——这起到了减法运算的作用:


我想你是想用多个几何体剪裁一个几何体? sdo_差异仅允许一个(单个)几何图元剪裁另一个(单个)几何图元

我有一个类似的要求,并与sdo_aggr_union解决了它。这现在是12c中Oracle定位器的一部分

    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_差异发挥作用。对于后续过程,我需要过滤掉短/空段