首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongoDB -检查多个位置的进入/退出多边形事件的最佳方式是什么?

mongoDB -检查多个位置的进入/退出多边形事件的最佳方式是什么?
EN

Stack Overflow用户
提问于 2017-04-06 04:17:36
回答 1查看 28关注 0票数 0

我正在做一个项目,其中我有许多车辆(大约2000辆)和几个多边形在我的DB (与mongo一起工作)。

我有不同种类的多边形(城市,国家,交叉口……),就这一点而言,我们假设有4种类型。

每分钟我都会得到车辆的新位置,我需要在客户端的一个表格上显示当前的国家、城市和交叉口(或最后一个交叉口)。我真正想知道的是车辆何时进入/离开多边形。

我知道可以查询车辆的特定位置的当前多边形,但我需要获取2000辆车辆的当前4种多边形类型。

这是8000(!)数据库每分钟的查询次数。

做我想做的事情最好的方法是什么?谢谢:)

EN

回答 1

Stack Overflow用户

发布于 2017-04-06 16:39:44

我认为有一个更好的解决方案,因为车辆在飞行之前不能频繁地改变他们的城市/国家。我正在考虑下面的方案-

代码语言:javascript
复制
Country={
      id: ObjectId or String, 
      name: String, 
      cities: [<array of city subdocuments>],
      near_country: [<array of IDs of neighbour countries>],
      boundary: location boundary for city <city would be polygon or your choice of geoType>
}

country中的City子文档可以具有类似于{id, name, boundary, near_city}.的架构,我将选择我的车辆架构作为{id, location_cordinates, curr_city, curr_country}

现在,当您获得车辆位置数据时,只需从存储的车辆文档中获取curr_city,并检查location是否仍在curr_city中。如果没有问题,那么您只需要检查该位置是否在任何near_city中。

如果城市/国家/地区因车辆移动而更改,则需要使用最新数据更新车辆。

通过这种方式,您将最小化对DB的查询。这将需要一些代码,因为不是所有的事情都可以在DB中完成。

在这里,我做了一些假设,比如-

车辆的

  • 位置将存储在车辆文档中。如果不是你的情况,那就把它去掉。你可能是从GPS或类似的东西中获取位置,而不需要根据你的需要来存储它。
  • 我不能理解交叉口的部分。它是过渡还是相交?通常国家有州,州有城市,以此类推。城市名称可以在一个州内重复,也可以跨州重复。但是一个城市将只是一个州的一部分。如果不是这样,那么你只需要将同一城市放在多个国家,并将代码逻辑放在处理这些城市的代码逻辑中。
  • 当你在城市附近时,你需要考虑那些在国家边界上的城市,并且可能有来自另一个国家的城市附近。

希望我理解你的问题和解决方案对你有帮助。如果我得到进一步的信息,我将很乐意提供进一步的帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43240860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档