问题标签 [mongodb-geospatial]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - 如何使用 mongodb 和 mongoose 在 NodeJS 中使用地理空间数据检查车辆是否进入地理围栏?
我一直致力于使用 Node.JS、mongoDB 和 mongoose 框架创建地理围栏和警报系统。
我有一辆带有传感器的车辆,它会不断发送它经过的坐标。现在,我需要检查该车辆是否进入了我之前创建的地理围栏。
如果车辆进入围栏,我需要向系统管理员发送警报。
但是我对如何使用车辆本身提供的坐标和围栏的坐标来检查车辆是否进入围栏感到困惑。
以下是我到目前为止使用的代码。
Geofences.js 模型
FenceAlerts.js 的示例数据
FenceAlerts.js 模型
FenceAlerts.js 的示例数据
车辆发送的坐标
我一直在使用 RabbitMQ 和 MQTT 进行数据的连续传输。因此,随着车辆发送的每个有效载荷,我需要检查车辆是否在围栏内。
但实际的问题是,如何比较设备位置和围栏坐标?
我已经看到$geoWithin
但无法理解如何在我的情况下实施。无论如何要比较它们并返回字符串,例如VEHICLE ENTERED THE FENCE和VEHICLE LEFT THE FENCE?
mongodb - Mongo geoWithin 错误:多边形坐标必须是数组
我有一个带有地理点的数据集。
{ _id ...其他字段...位置:{类型:“点”,坐标:[0,0]}}
我一直在尝试做的是过滤并删除任何在水体中有点的文件。我下载并转换了地球水体的形状文件,并将其存储在同一数据库中的单独集合中。我一直在尝试使用 Mongo 的 geoWithin 函数,但是当我指定水体的多边形文档时,我无法让它为我工作。如果我对多边形进行硬编码,它可以工作,但我真的不想将地球上所有的水多边形都输入到我的代码中......
这不起作用:
或这个
它会生成此错误:
E QUERY [js] 未捕获的异常:错误:计数失败:{“ok”:0,“errmsg”:“多边形坐标必须是数组”,“code”:2,“codeName”:“BadValue”}:_getErrorWithCode@ src/mongo/shell/utils.js:25:13 DBQuery.prototype.count@src/mongo/shell/query.js:376:11 @(shell):1:1
这有效并且不会引发错误,但需要硬编码值:
和这个
我粗略的不想计数,但将其用于测试目的。
对我来说,简单的答案看起来像这样:
我想使用多面体,因为有很多水体。
到目前为止,我已经阅读了我在谷歌上可以找到的所有内容,但对我没有任何帮助。我找到的所有示例都为坐标数组硬编码,但我不想这样做。请帮助并让我知道是否有办法做到这一点或删除所有在陆地上找不到的点。
提前致谢。
mongodb - 使用与所需点的距离对 mongoDB 中的项目进行排序
Azure 上的数据库
MongoDB 与 Cosmos DB(因此 Mongo 版本将是 3.6)
场景:
我希望在移动应用程序中向用户展示,这些项目链接到在文档结构深处具有坐标的供应商。我想在应用程序中按距离排序向用户显示项目并显示距离(我不希望只过滤接近的项目)。
物品收藏:
供应商集合:
查询应采用最终用户的坐标并返回以下内容:
提前致谢
mongodb - MongoDB & Parse Server - 无法基于 geoPoint 进行查询
简单查询:
这self.userLocation
是一个PFGeoPoint。
由于这篇文章,我在 mongo 上添加了一个索引:
我很确定错误来自我在课堂上创建location
字段的方式。Adventure
我正在使用 pymongo 访问我的 MongoDB 并使用此代码创建location
对象:
Parse说要创建一个 JSON 对象,例如{"__type": "GeoPoint","latitude": 40.0,"longitude": -30.0}
.
Mongo说要创建一个 JSON 对象,例如{ type: "Point", coordinates: [ 40, 5 ] }
. 尝试上述方法时,它以字符串类型出现,我很确定它需要是坐标数组,因为:
当我使用 IOS Parse 框架上传 PFGeoPoint 时,它以数组的形式出现
当保存location
为这样的数组[-71.12345, 50.12345]
时,我在客户端将其打印出来,并且位置对象被识别为 PFGeoPoint。所以我假设我正确地创建了它们。
最后在服务器端我收到这个错误:
错误:解析错误:MongoError:未知运算符:$maxDistance
仅查询Adventure
类会返回结果。查询只是nearGeoPoint:
不返回任何错误。查询nearGeoPoint: withinMiles:
返回错误。
node.js - 如何在服务器端从多边形列表中找到哪个多边形包含给定的 GPS 坐标?
背景资料
我正在使用 Node JS 和 MongoDB 作为数据库来为收集地理空间数据的移动应用程序构建 API。数据由纬度和经度信息以及与应用程序相关的其他数据组成。
问题陈述
该移动应用程序从印度不同的州收集数据,在每个州内,该地区被划分为部门和范围。每个分区和范围的形状文件以 KML 文件或[{lat, long}]
数组格式提供。鉴于分区/范围是多边形,应用程序必须找出 gps 位置来自哪个分区/范围。有 15 个州可以运行应用程序,每个州大约有 12-15 个部门。每个部门由 6-10 个范围组成。
我的问题是:-
如果将 GPS 坐标作为 API 的输入,我希望输出是点所在的状态、分区和范围名称。如果它不在任何多边形(状态/分区/范围)内,则保存在数据库中API 应返回 null。
鉴于我有数组格式的分区和范围列表
[{lat, long}]
,如何将其存储在 MongoDB 中以解决上述问题。
假设 1、2 和 3 是一个州内不同的划分/范围多边形(假设整个白皮书代表印度的一个州),
- 当输入为 A 点
(lat : x1, long : y1)
时,输出应为 null,因为它不在任何除法/范围内 - 当输入为点 B
(lat : x2, long : y2)
时,输出应为多边形 3,因为该点位于多边形 3 内。
提前致谢!
mongodb - 需要有关地理空间 mongo 查询的帮助
我们想在地图中显示所有这些位置。当用户放大时,我们只需要检索地图可见区域内的位置。Map 给了我们 swPoint 和 nePoint 的坐标。
我们想要获得所有位置在 2 个点(swPoint,nePoint)。基本上是一个盒子内的所有位置。我们创建了 db.locations.createIndex({ "outdoor.location": "2dsphere" }) 的索引,感谢您的帮助。
以下是示例位置数据:
谢谢
mongodb - 我们如何在 mongodb 中使用 near 计算距离
请参考以下链接:mongodb 中的 next。我想计算我给出的坐标与文档中存在的坐标之间的距离。我有以下查询
我也想用近来显示距离。还是有另一种方法可以计算距离?
mongodb - MongoDB - $geoNear 和 includeLocs 在同一文档中有多个匹配项
我有一个看起来像这样的集合:
Mongodb 采集数据:
member.address.location.coordinates 上有一个 2dsphere 索引。
Mongod geonear 查询的可选参数只返回一个坐标值。即使收集第一条和第二条记录具有相同的坐标值,查询也只返回一个子文档。但预期的结果是,当集合数据中有多个匹配坐标时,查询应该给出所有子文档。
MongoDB查询:
实际结果:
预期结果: