我在ES中有两个geo_shapes。我需要弄清楚的是了解其中一个形状(绿色)是否包含或与另一个(红色)相交的最佳方式。 请参考下面的三种不同情况的直观表示:Elasticsearch Geoshape查询虚假结果
案例一:容易检测 - 利用绿色形状坐标进行Geoshape查询与“关系” =‘内’
案例二:还没有要做的事情 - 使用绿色形状坐标做一个Geoshape查询与“关系”=“INTERSECTS”
案例三:是一个真正的问题 - 使用绿色形状坐标我试图做一个Geoshape查询“relation”=“INTERSECTS “并且红色的形状返回结果...这是错误的 - 这种形状不会相互交叉(我认为是这样),即使其中一个边接触每个其他......
有什么办法可以避免这里的误报结果?任何其他建议如何解决这个任务?
P.S.坐标精确(例如:13.335594692338)。有没有像tree_levels或精度没有额外的映射......
我不明白为什么情况1使用范围内,当红色/绿色多边形彼此相邻(并触摸边界的一侧)。 另外,案例3,根据定义,相交。他们触摸 – coffeeaddict
案例1 - 对不起,我应该使红色有点transperant ...但它是在绿色的矩形(绿色的矩形是相同的case2-3。 ..) 关于交叉点 - 约定,但也不同意 - 交叉点是“交叉”...是n的边界,并不意味着交叉它)无论如何,一些解决方案将是很好的定义交叉和触摸)) ) –
不幸的是,ES不支持通过'touch'进行匹配。它只提供相交(根据定义,它意味着共享一个共同点,不管它是否跨越,您可能会不同意这一点,但这是官方定义。) 如果您想要解决方法,可以从弹性搜索,并使用提供触摸方法的JTS库 – coffeeaddict