Oracle空间区域重叠百分比

时间:2018-04-17 09:21:12

标签: sql oracle overlap oracle-spatial

我正在使用2个包含多边形的表格,如下所示。 我有许多停车区和dangerareas表中包含的两个特殊区域。 一些停车区域与这些区域重叠,我的目的是两个知道这种重叠的程度作为每个停车区域的重叠百分比。 我想要一个不重叠的停车场的空结果。 我正在使用SQL Oracle Developper。 我无法弄清楚为什么这个查询不起作用。 (我已经调整了图层名称,因为我无法使用真正的图层名称,我希望没有错字)。 我的查询返回错误:

  

ORA-13011:值超出范围ORA-06512:at" MDSYS.SDO_GEOM",line   125 ORA-06512:at" MDSYS.SDO_GEOM",1878行   13011. 00000 - "价值超出范围"

db = CITY
Table 1 : parkingzones PK
id_parking
SHAPE

Table 2 : dangerareas DA
id_area
SHAPE

SELECT 
 (area_overlaps/area_zones*100) as pct_overlap

FROM  
(SELECT(SDO_GEOM.SDO_AREA 
     (SDO_GEOM.SDO_INTERSECTION(PK.SHAPE,DA.SHAPE,0,05)0,05)) area_overlaps
  FROM CITY.parkingzones PK
       CITY.dangerareas DA),
 (SELECT (SDO_GEOM.SDO_AREA(PK.SHAPES,0.05)) area_zones ) 
  FROM CITY.parkingzones PK);

1 个答案:

答案 0 :(得分:1)

停车总面积:

select sum(SDO_GEOM.SDO_AREA(PK.SHAPES,0.05)) total_parking_area
  FROM CITY.parkingzones PK

总重叠区域:

SELECT sum(SDO_GEOM.SDO_AREA( 
             SDO_GEOM.SDO_INTERSECTION(PK.SHAPE,DA.SHAPE,0.05),0.05))) total_overlap
  FROM CITY.parkingzones PK
       ,CITY.dangerareas DA
where sdo_anyinteract(PK.shape,DA.shape) = 'TRUE';

每次停车重叠(只有重叠)

select (sdo_geom.sdo_area(sdo_geom.sdo_intersection(pk.shape, da.shape, 0.05), 0.05) /
       sdo_geom.sdo_area(pk.shape, 0.05)) * 100 percentage
  from city.parkingzones pk
      ,city.dangerareas  da
 where sdo_anyinteract(pk.shape, da.shape) = 'TRUE';