我在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