代码之家  ›  专栏  ›  技术社区  ›  James Gould

蒙古地理空间与多边形相交

  •  1
  • James Gould  · 技术社区  · 6 年前

    我已经找了大约一个小时了,似乎找不到解决这个问题的方法。

    我的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 绘制地图 位置 没错,我明白了 [lng, lat] 回到预期中,但我似乎不能执行 intersects 在我收集的任何文件上。

    我的查询如下:

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

    在哪里? geozone 是上面列出的多边形。

    我有一个 2dsphere 指数 位置 在每一份文件中也可供参考。

    如果我通过 geospatial type 作为一个 LineString 我得到了0个记录,但作为一个 Polygon 给我 geojson coordinates must be an array 但据我所知,它们是一个数组(显然)。

    有什么我错过的吗?我敢肯定这个虫子很小,我还没发现。

    1 回复  |  直到 6 年前
        1
  •  0
  •   James Gould    6 年前

    愚蠢的虫子 coordinates 需要包装的属性 另一个 集合 [ ] 因为它是有效的 Polygon . 现在工作很好。