2016-05-16 49 views
0

我希望能够在elasticsearch中做一个地理边界框查询,并且有一些误差(主要是在同一位置给出max和min)。理想情况下,这会给矩形带来很好的圆角,每个角落都有一个四舍五入的圆角,但只需在右上方增加x英里,从左下角减去它们就足够了。(Elasticsearch)有没有办法将±范围添加到地理边界框查询的边缘?

我可以通过将距离转换为纬度长度的差异来实现这一点,但随着地图的变化取决于实际的纬度,这很复杂,所以我宁愿不这样做。

在此先感谢您的任何建议。

回答

0

虽然您无法定义完美的圆角矩形,但您可以使用Geo Polygon Query而不是边界框来逼近它,您只需编程计算圆角上的某些点;只要你想

enter image description here

等了其他角落,与尽可能多的中间点:比如假设你的左上角坐标为X0,Y0。

但是,它似乎有点矫枉过正,你可能只是想扩大你的边界框。

UPDATE:另一种方式可以是自定义函数的实现通过Scripting,因为一个GeoPoint的纬度和经度可以accessed through scripting

+0

感谢您的回答。简单地扩展边界框会很好,但根据给定的英里数计算出多少度的经纬度并不是特别容易。这是可行的,但我希望有人知道一个更优雅的解决方案,因为弹性搜索必须在后台(无论如何)(有效地)为地理距离查询做这种事情。 – kiml42

+0

您可以使用脚本来实现您自己的距离功能,请参阅我的更新回答 – dipanda

+0

再说一次,这可行,但我的问题不是我无法做到这一点,而是我无法做到整齐,并且可能可以不要这么做,就像有一个简单的方法可以让elasticsearch为我做这件事一样。 – kiml42

相关问题