猫鼬地理空间与多边形相交

时间:2018-10-17 15:26:07

标签: node.js mongodb mongoose

我已经搜索了一个小时左右,但似乎找不到解决方案。

我在Node.js应用程序中有一个定义的多边形,存储为:

[[-0.4449,51.4532],[-0.4586,51.4562],[-0.4591,51.4572],...

每个点均以[lng,lat]给出。

在我的MongoDB集合中,我具有以下结构的对象:

_id: ...
givenID: ...
location: [lng, lat]
...

我将location属性表示为:

  location: {
    type: [Number]
  },

在我的mongoose模式中。

我可以查询所有记录,而schema正确地映射了location,并且我按预期返回了[lng, lat],但是我似乎无法执行intersects在我收藏的任何文件中。

我的查询如下:

  let geoJson ={
    "type": "Polygon",
    "coordinates": geozone
  };

  try {
    const test = await GpsLog.where('location').intersects().geometry({
      type: "Polygon",
      coordinates: geozone
    });

其中geozone是上面列出的多边形。

我在每个文档的2dsphere上都有一个location索引,以供参考。

如果我将geospatial type作为LineString传递,我会返回0条记录,但是如果将它作为Polygon传递给我geojson coordinates must be an array,但就我而言可以看出它们是一个数组(很明显)。

有什么我想念的吗?我确定该错误是我尚未发现的微小错误。

1 个答案:

答案 0 :(得分:0)

严重的错误,必须将coordinates属性包装在{em}的另一个{em}集合中,才能使其成为有效的[ ]。现在工作正常。