将地理空间路径与MongoDB进行比较
我正在开发一款移动应用程序,它可以定期跟踪用户的位置,让用户在地图上标出旅行路线。我们想添加一个可选功能,告诉他在他看到的时间范围内,该应用程序的其他用户有哪些进行过类似的旅行,无论是今天的通勤还是最后一个月的旅行。我们称之为“路径匹配” 这些数据目前以二进制格式登录到iOS和Android上应用程序私有存储目录中的文件中,可以轻松快速地扫描到读取位置。每个文件包含一天的位置,通常运行到大约80KB 为了能够实现路径匹配功能,我们显然需要开始将这些位置日志上传到我们正在运行PHP的服务器上(当然是在用户许可的情况下)。有人建议MongoDB使用其地理空间能力,但我有几个问题,也许大家可以帮助我:将地理空间路径与MongoDB进行比较,mongodb,geospatial,bson,Mongodb,Geospatial,Bson,我正在开发一款移动应用程序,它可以定期跟踪用户的位置,让用户在地图上标出旅行路线。我们想添加一个可选功能,告诉他在他看到的时间范围内,该应用程序的其他用户有哪些进行过类似的旅行,无论是今天的通勤还是最后一个月的旅行。我们称之为“路径匹配” 这些数据目前以二进制格式登录到iOS和Android上应用程序私有存储目录中的文件中,可以轻松快速地扫描到读取位置。每个文件包含一天的位置,通常运行到大约80KB 为了能够实现路径匹配功能,我们显然需要开始将这些位置日志上传到我们正在运行PHP的服务器上(当然
$\u POST['locations']
或是一个关联数组的数组中。对其进行清理并将其保存到数据库中,类似于:
$locs=消毒($_POST['locations']);
$doc=array('path'=>array('type'=>'LineString','coordinates'=>$locs),'user'=>$userId);
$collection->insert($doc)
在上面的示例中,我使用了一些最新的geo工具(),您需要一个夜间构建来实现这一点,但它应该在大约一个月后进入稳定构建。如果在此之前需要,可以使用较旧的geo API:
MongoDB不读取BSON文件,但您可以使用mongorestore手动加载它们。不过,我强烈建议让司机为你做一些低级的事情{path:{$near:{$geometry:userPath}}}
查找“附近”路径。您还可以尝试围绕用户的路径创建一个多边形,并在多边形中查询docs$“LineString”这个东西看起来非常适合存储路径。所谓多文档路径,我的意思是Mongo商店可能最终包含多个文档,每个文档在某一天都有用户的位置路径。因此,每个用户每天有一个文档。我需要弄清楚的是,如何在多天内将用户的路径与其他用户的路径进行比较。最终,我们想告诉用户“在这段时间内,这些人往往离你很近”。看起来Mongo很适合这个!酷!编辑以添加有关查找附近路径的更多信息。请指定此查询中userpath的格式{path:{$near:{$geometry:userpath}}我有同样的要求,但我不知道如何通过userpath我看过文档,似乎$gemetry for$near只接受点而不是路径我在这方面是对的吗?你解决问题了吗?我有一个类似的问题,我需要通过给出一组点来找到一条匹配的路径。但是我用$GEOSINTERSECTS和LineString没有得到任何结果。