首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GeoJSON / mongoose-geojson-schema /介绍混淆

GeoJSON / mongoose-geojson-schema /介绍混淆
EN

Stack Overflow用户
提问于 2017-09-30 01:22:01
回答 1查看 411关注 0票数 0

当我试图学习Hapi / Mongoose / Mongo时,新手的问题和困惑。

我的任务是想简单地创建一个包含文本和地理位置点(经度)的模型/对象,并可以使用提供的当前经度从数据库中检索这些对象(&L

尝试使用mongoose-geojson-schema包创建模式

"mongoose": "^4.11.1", "mongoose-geojson-schema": "^2.1.2"

型号:

代码语言:javascript
运行
复制
const GeoJSON = require('mongoose-geojson-schema');
const mongoose = require('mongoose');

const Schema = mongoose.Schema;
const Point = mongoose.Schema.Types.Point

const postModel = new Schema({
  _owner: { type: String, ref: 'User' },
  text: { type: String },
  loc: Point
});

创建帖子:

代码语言:javascript
运行
复制
let post = new Post();
post._owner = req.payload.user_id;
post.text = req.payload.text;

var point = new GeoJSON({
  point: {
  type: "Point",
  coordinates: [req.payload.lat, req.payload.lon]
  }
})
post.loc = point

在日志中不断获取错误GeoJSON is not a constructor。尝试了不同的变体,并得到了其他错误,如loc: Cast to Point failed for value "{ type: 'Point', coordinates: [ '39.0525909', '-94.5924078' ] }" at path "loc"

EN

回答 1

Stack Overflow用户

发布于 2017-11-01 01:40:35

我发现mongoose-geojson-schema包使用起来很麻烦。如果您只是简单地存储点,请将模型更改为:

代码语言:javascript
运行
复制
const postModel = new Schema({
  _owner: { type: String, ref: 'User' },
  text: { type: String },
  loc: {
    type: { type: String },
    coordinates: [Number]
  }
});

接下来,向后存储坐标。虽然我们通常考虑的是经度/经度,但在GIS世界中,我们考虑的是经度/经度。GeoJson也不例外。用x/y术语来考虑它,它将是有意义的。因此,将您的创建更改为:

代码语言:javascript
运行
复制
post.loc = {
  type: 'Point',
  coordinates: [req.payload.lon, req.payload.lat]
}

在这一点上,它将正确地存储在mongo中,但它不会有太大的用处,因为您将无法对其进行搜索或进行任何数学运算。您需要做的最后一件事是添加一个2dsphere索引。

代码语言:javascript
运行
复制
postModel.index({'loc': '2dsphere'});

现在你应该可以走了。您可以在点的给定距离内查找柱子:

代码语言:javascript
运行
复制
postModel.find({
  loc:{
    $geoWithin: { $centerSphere: [ [ -105.42559,36.55685 ], 10 ] }
  }
}).exec()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46493986

复制
相关文章

相似问题

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