无法提取地理位置的地理键

Posted

技术标签:

【中文标题】无法提取地理位置的地理键【英文标题】:Can't extract geo keys for location 【发布时间】:2019-04-06 09:36:05 【问题描述】:

我正在尝试将位置存储在 MongoDB 数据库中。到目前为止,我创建了一个包含字段的架构 -

lastLocation: 
type: [Number, Number],
index: '2dsphere'
, 

因此,当我尝试使用邮递员增加​​值时,所有其他字段都存储在数据库中,但不存储位置。

我已尝试发送下面给出的原始数据 -

 ...."lastLocation": [123.443,123.342],.....

并得到以下错误 -

can\'t project geometry into spherical CRS: [ 123.443,123.342 ]

我想要可以在邮递员中作为原始数据发送的虚拟数据。那么,谁能给我原始数据?如果我在 nodejs 代码的其他部分也有错误,还请提出建议。我在这里使用猫鼬。

谢谢

【问题讨论】:

对不起,但有点不清楚您的问题实际上在这里问什么。您是否真的试图将新数据“插入”到 MongoDB 并且它抱怨提供的坐标无效?如果是这样,那么您可能应该包括发送的实际数据、执行插入的代码和完全从驱动程序响应返回的“完整”错误。如果您实际上要求的是有效的“虚拟数据”。然后在谷歌地图上查找您当前的位置并获取坐标。这些都是有效的,实际查找样本数据集也很简单。 我要求的是 json 数据格式,并不关心应该是什么值。 要明确“JSON 格式”不是您的问题。简单的事实是123.443, 123.342 不是有效的球坐标。但是像[-122.5076404, 37.7576793 ] 这样的东西实际上是。这就是您抱怨的错误。 我刚刚将 lastLocation 更改为 location 并且一切正常!奇怪!! 【参考方案1】:

尝试这些更改。它可能会对你有所帮助。

const location = 
    lastLocation: 
        type: 
            type: String,
            default: 'Point'
        ,
        coordinates: []
    

location.index(
    location: '2dsphere'
)

【讨论】:

这些更改似乎确实是从其他人的答案中复制而来的。 (可能是most original source here)虽然整个“类型/类型”猫鼬模式混淆确实是一个问题,但这并不是这里的问题似乎真正涉及的问题。 我刚刚将 lastLocation 更改为 location 并且一切正常!奇怪!! 但是你的评论也帮助了我。谢谢!

以上是关于无法提取地理位置的地理键的主要内容,如果未能解决你的问题,请参考以下文章

即使 GeoJSON 有效,也无法提取地理键

Mongoose GeoJSON 在使用中间件时抛出“MongoError:无法提取地理键”

通过 JAVA 从 MongoDB“NYC 餐厅”集合中提取地理键字段

无法使用地理位置从文本中提取城市名称(Python)

地理元素必须是数组或对象:类型:“点”

你如何从android中的照片中提取地理位置信息?