关于MarkLogic geo.regionDe9im返回异常DE-9IM结果的技术问询
全等多边形DE-9IM结果异常的原因分析
先明确DE-9IM矩阵的9位对应逻辑:
- 第1位:几何A内部 ∩ 几何B内部
- 第2位:几何A内部 ∩ 几何B边界
- 第3位:几何A内部 ∩ 几何B外部
- 第4位:几何A边界 ∩ 几何B内部
- 第5位:几何A边界 ∩ 几何B边界
- 第6位:几何A边界 ∩ 几何B外部
- 第7位:几何A外部 ∩ 几何B内部
- 第8位:几何A外部 ∩ 几何B边界
- 第9位:几何A外部 ∩ 几何B外部
按照OGC标准,两个完全重合的全等多边形,DE-9IM矩阵应为2FFF1FFF2(对应模式TFFFTFFFT)——其中第9位的2表示两个多边形的外部区域交集是二维面状(非空),这也是geof:sfEquals、geof:ehEquals等等价关系的核心判定依据。
你得到的2FFF1FFFF结果中第9位为F,这属于MarkLogic的regionDe9im函数实现偏差:根据标准定义,全等多边形的外部是整个平面减去该多边形,二者的交集显然是同一个有效区域,维度为2,不应返回F。
可以通过两种方式验证:
- 测试两个全等但不重合的多边形(比如将其中一个平移微小距离),查看
regionDe9im返回的第9位是否为2,如果是,说明函数在处理完全重合的几何时存在特殊逻辑bug; - 直接使用MarkLogic提供的
geof:sfEquals函数判断全等,该函数遵循GeoSPARQL标准,能正确返回true,无需自行解析DE-9IM矩阵。
内容的提问来源于stack exchange,提问作者RedCrusaderJr
相关产品推荐
相关产品推荐

