我正在使用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);
答案 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';