You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle Spatial 12c中sdo_aggr_union填充内环问题咨询

Oracle Spatial 12c sdo_aggr_union() 处理带内环图形的问题

问题描述

使用Oracle Spatial 12c的sdo_aggr_union()函数对多个包含内环(孔洞)的图形执行聚合操作时,结果会填充孔洞生成实心图形,与预期不符:

  • 原始图形:相邻图形间存在切口,且包含内环孔洞
  • 聚合结果:切口消失,但原孔洞被填充,转化为实心区域

问题分析与解决方向

1. 是否为预期行为?

sdo_aggr_union()遵循拓扑规则:若孔洞区域被其他合并的多边形覆盖,函数会自动填充该孔洞(拓扑上该区域已不属于“孔洞”范畴)。但如果未被覆盖的孔洞仍被填充,则不属于预期行为。

2. 12c版本的已知Bug?

Oracle 12c部分版本存在sdo_aggr_union()处理带内环多边形的拓扑计算错误,会误填充未被覆盖的孔洞。可通过Oracle Support文档(如Doc ID 2075443.1)确认是否属于已记录的Bug。

3. 保留内环的替代方案

若需合并图形且保留未被覆盖的孔洞,可尝试以下方法:

  • 分步处理:先对所有外轮廓执行sdo_aggr_union(),单独提取所有内环,再用sdo_geom.add_elem()将内环作为孔洞添加到合并后的外轮廓中。
  • 升级版本:升级至Oracle 18c及以上版本,该版本优化了空间聚合的拓扑计算,修复了12c的部分相关Bug。
  • 自定义聚合逻辑:通过PL/SQL编写自定义函数,手动分离每个图形的外轮廓与内环,执行合并后重新组合孔洞元素。

图形示例

原始图形(带切口和内环):
原始图形

sdo_aggr_union()执行结果(孔洞被填充):
聚合结果

内容的提问来源于stack exchange,提问作者ffxx68

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 16:51:02