【发布时间】:2018-08-11 22:09:54
【问题描述】:
我正在寻找一个使用 Apache Ignite 的示例,其中我们有一堆地理点,例如城市中的示例位置,我们对半径内某个点附近的点进行查询。
我只在以下位置找到了一个 POLYGON 搜索示例: https://dzone.com/articles/geospatial-queries-with-apachereg-ignite
谢谢,谢谢 路易斯·奥斯卡
【问题讨论】:
标签: geolocation ignite
我正在寻找一个使用 Apache Ignite 的示例,其中我们有一堆地理点,例如城市中的示例位置,我们对半径内某个点附近的点进行查询。
我只在以下位置找到了一个 POLYGON 搜索示例: https://dzone.com/articles/geospatial-queries-with-apachereg-ignite
谢谢,谢谢 路易斯·奥斯卡
【问题讨论】:
标签: geolocation ignite
Ignite 使用Java Topology Suite 来支持空间查询。据我所知,JTS 不支持圆形几何。
但您仍然可以用多边形近似圆。如果您确切需要适合圆形的点,您可以查询位于外接正多边形中的点,然后过滤掉距离大于指定半径的点。过滤可以在查询之外的代码中执行。
【讨论】:
如上所述,您可以使用“较大的矩形或正方形”,即包含圆形的较小矩形。然后使用 isWithinDistance(...) 方法从您的原始点循环遍历结果,以过滤矩形内而不是圆内的点。
但是,由于 ignite 使用 JTS,它是一种平面表示,根据我的测试,您无法使用球面(或椭球)投影(如 WGS84)进行准确搜索,并且许多结果都是错误的。很可能多边形搜索不准确,并且 isWithinDistance 无法正确过滤,除非您在距离原始点不到 10 米的地方搜索。
【讨论】: