【问题标题】:MongoDB complex polygon with a hole带孔的 MongoDB 复杂多边形
【发布时间】:2021-05-17 13:43:12
【问题描述】:

我想知道有没有办法查询带有孔的复杂多边形。示例:

[
  [
    // hole rectangle
    [ 59.187, 42.891 ],
    [ 59.187, 13.997 ],
    [ 46.377, 13.997 ],
    [ 46.377, 42.891 ]
  ],
  [
    // border rectangle
    [ 63.802, 57.964 ],
    [ 63.802, 0.176 ],
    [ 37.719, 0.176 ],
    [ 37.719, 57.964 ]
  ]
]

我说的是地理空间查询:

$geoWithin: {
    $polygon: polygon
}

我听说有一种方法可以在不同的查询中对相交进行分组,但对我来说似乎不是很好,所以也许我错过了一些东西。所以我正在寻找一种在非孔(突出显示)区域进行查询的方法:

【问题讨论】:

  • 我希望 array.flat() 能提供帮助,但没有
  • 我认为您必须运行 2 个查询阶段,一个 $geoWithin 用于外部区域,然后删除内部区域。或使用 3rd 方库,例如turf.js

标签: mongodb performance maps polygon


【解决方案1】:

现在我将继续进行下一个棘手的事情:

我将这些阵列展平并添加更多点,使其成为一个边距最小的单一实心多边形。一旦我测试了这件事的性能并将其与其他方式进行比较(例如查询所有内容并删除不需要的内容),我将更新此评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2016-05-07
    • 2017-12-08
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    相关资源
    最近更新 更多