Oracle Spatial 区域重叠百分比
Oracle Spatial Area Overlap Percentage
我正在使用 2 个 table 包含如下所示的多边形。
我有很多停车区和危险区域 table 中包含的两个特殊区域。
一些停车区与这些区域重叠,我的目的是两个知道这种重叠的程度,即每个停车场的区域重叠百分比。
对于不重叠的停车场,我想要一个空结果。
我正在与 SQL Oracle Developper 合作。
我不明白为什么这个查询不起作用。
(我已经调整了图层名称,因为我不能使用真实的图层名称,我希望没有错别字)。
我的查询 returns 一个错误:
ORA-13011: value is out of range ORA-06512: at "MDSYS.SDO_GEOM", line
125 ORA-06512: at "MDSYS.SDO_GEOM", line 1878
13011. 00000 - "value is out of range"
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);
总停车面积:
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';
我正在使用 2 个 table 包含如下所示的多边形。 我有很多停车区和危险区域 table 中包含的两个特殊区域。 一些停车区与这些区域重叠,我的目的是两个知道这种重叠的程度,即每个停车场的区域重叠百分比。 对于不重叠的停车场,我想要一个空结果。 我正在与 SQL Oracle Developper 合作。 我不明白为什么这个查询不起作用。 (我已经调整了图层名称,因为我不能使用真实的图层名称,我希望没有错别字)。 我的查询 returns 一个错误:
ORA-13011: value is out of range ORA-06512: at "MDSYS.SDO_GEOM", line 125 ORA-06512: at "MDSYS.SDO_GEOM", line 1878 13011. 00000 - "value is out of range"
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);
总停车面积:
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';