8 geolocation geospatial mongodb
我在这里阅读MongoDB的文档,我发现它非常有趣.但是,有一个功能似乎非常有用,但没有明确记录.这就是地理围栏的概念.如果我创建一个半径(或一个矩形),我如何执行一个查询,以便我可以提供一个点,Mongo可以告诉我该点是否在定义的区域内,而不是必须查询附近的区域和执行Ray-Casting算法(或其他算法)以确定我提供的点是否位于这些区域内.
在正确的方向上提供任何帮助,或者更好的是,如何使用MongoDB执行此操作的一些示例非常感谢.谢谢!
更新
只是为了让每个人都知道我做了什么.我最终推出了我自己的构建在Mongo之上的解决方案(利用它现有的地理空间索引/查询能力),并且它适用于原型.作为在生产中使用的解决方案,它肯定可以使用一些改进.但是,我写了一篇关于我如何解决这个问题的博客系列以及Ruby中的示例服务器.你可以找到我的网站博客的第一部分在这里.
不幸的是,mongodb的地理索引仅用于存储点数据.存储区域需要对我们正在使用的数据结构进行一些认真的重新设计,这是一个长期目标,但不会在短期内发生.作为一种解决方法,如果您的区域大小大致相同,您可以放心存储每个区域的中心点.然后,您可以获取十个最近的区域,并在您的应用中执行客户端过滤器,以确定查询点所在的区域.
或者,您可以创建一个理想化的网格,并将每个区域包含的网格方块存储在该区域的数组中.然后将查询点映射到它的网格方块,并找出该点所在的区域(如果该方块多于一个).这实际上类似于我们实现地理索引的方式,尽管我们使用动态网格.如果您想要使用此路线,则应使用普通(非地理)索引.
虽然这些都不是理想的,但希望它们能提供可行的解决方案.
| 归档时间: |
|
| 查看次数: |
4951 次 |
| 最近记录: |