上一篇
📢 最新动态
据2025年7月Oracle官方技术社区消息,ORA-13025错误在近期GIS系统升级中出现频率显著上升,尤其影响使用SDO_GEOMETRY处理复杂多边形的用户。
当你执行空间数据操作(如插入/更新多边形数据)时,突然弹出:
ORA-13025: polygon does not close
简单说就是:系统检测到你提交的多边形没有闭合!
1️⃣ 首尾点不重合:多边形最后一个点必须与第一个点坐标相同
2️⃣ 坐标系转换异常:不同坐标系转换时可能引入微小误差导致"假闭合"
3️⃣ 人工录入错误:手动输入坐标时漏掉闭合点
4️⃣ 第三方工具导出BUG:某些GIS工具导出数据时可能丢失闭合点
SELECT SDO_UTIL.TO_WKTGEOMETRY(你的空间字段) FROM 你的表 WHERE ROWNUM < 5;
看输出结果的首尾坐标是否一致,
POLYGON ((120 30, 121 30, 121 31, 120 31, 120 30)) -- ✅ 闭合
POLYGON ((120 30, 121 30, 121 31, 120 31)) -- ❌ 未闭合
SELECT SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(你的空间字段, 0.005) FROM 你的表;
如果返回13025
错误代码,就是这个问题!
UPDATE 你的表 SET 空间字段 = SDO_UTIL.CLOSE_GEOMETRY(空间字段) WHERE SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(空间字段, 0.005) = '13025';
UPDATE 你的表 SET 空间字段 = SDO_GEOM.SDO_MAKE_VALID(空间字段, 0.005) WHERE 条件;
注:0.005是容差阈值,根据实际精度调整
-- 示例:将四节点未闭合多边形强制闭合 UPDATE 你的表 SET 空间字段 = SDO_GEOMETRY( 2003, -- 多边形类型 你的SRID, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(120,30, 121,30, 121,31, 120,31, 120,30) -- 显式添加闭合点 ) WHERE 条件;
SDO_GEOM.VALIDATE_GEOMETRY
预检查 SDO_UTIL.RECTIFY_GEOMETRY
可能比CLOSE_GEOMETRY
更彻底 遇到顽固问题?建议用SDO_GEOM.SDO_LENGTH
计算周长,如果返回NULL就是几何体严重异常~
希望这篇指南能帮你快速搞定这个烦人的空间数据错误! 🎯
本文由 飞怿 于2025-07-30发表在【云服务器提供商】,文中图片由(飞怿)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://up.7tqx.com/wenda/482865.html
发表评论