查询多边形$ geowithin $ box mongodb不返回任何内容

时间:2017-02-23 01:46:26

标签: mongodb geometry gis geospatial bounding-box

伙计们我试图通过边界框查询里面的所有多边形,但它只返回0 ..它应该返回许多多边形!

或者,我尝试查询更大的边界框,没有任何反应!

我的查询是:

{
 geometry: 
    { $geoWithin: 
        { $box:  
            [ [-73.995762,40.764826], [-73.934034,40.802038] ] 
        } 
    }                       
}

请注意,同一查询返回类型为Point

的几何的有效结果

Points

2 个答案:

答案 0 :(得分:1)

  

通过边界框查询内部的所有多边形,但它只返回0

$box operator$geoWithin仅支持基于grid coordinates的文档,不支持GeoJSON形状格式。

  

同一查询返回Point

类型的几何的有效结果

根据您的文档结构以及查询方式,这可能被视为网格坐标,即{geometry: [<long>, <lat>]} 这可能不适用于您的多边形文档,因为GeoJSON Polygons需要额外的数组包装器。即[[ [<long>, <lat>] ]]使网格坐标格式无效。

如果您的文档采用GeoJSON格式,并且您想要选择某个区域,则可以使用$geometry代替。

db.places.find(
   {
     'geometry': {
       $geoWithin: {
          $geometry: {
             type : "Polygon" ,
             coordinates: [ [ [ 0, 0 ], [ 3, 6 ], [ 6, 1 ], [ 0, 0 ] ] ]
          }
       }
     }
   }
)

值得注意的是MongoDB Compass当前地理空间可视化(v1.6)尚不支持GeoJSON。

答案 1 :(得分:0)

以下是答案:

$ box可以与GeoJSON一起使用,但不能与多边形一起使用!您需要使用$框生成几何体。

此外,它始终必须具有起点和点,因此4点多边形将具有 5个坐标元组

但是它变得更加棘手,它必须遵循右手规则(逆时针)。

it's anticlockwise

使用$ BOX和POINTS测试GEOJSON

我的查询{geometry:{$ geoWithin:{$ box:[[-71.934034,38.764826],[ - 75.995762,43.802038]]}}}