查询多边形 $geowithin $box mongodb 没有 return 任何东西
Query polygons $geowithin $box mongodb doesn't return anything
伙计们,我正在尝试通过边界框查询内部的所有多边形,但它只是 returns 0.. 它应该返回许多多边形!
或者,我尝试查询一个更大的边界框,但没有任何反应!
我的查询是:
{
geometry:
{ $geoWithin:
{ $box:
[ [-73.995762,40.764826], [-73.934034,40.802038] ]
}
}
}
请注意,同一个查询 returns 是 Point
类型几何的有效结果
to query all the polygons inside by bounding box but it simply returns 0
$box operator for $geoWithin only supports documents based on grid coordinates and does not support GeoJSON 形状格式。
the very same query returns a valid result for geometries of type Point
根据您的文档结构以及您查询它们的方式,这可能被视为网格坐标,即 {geometry: [<long>, <lat>]}
这可能不适用于您的多边形文档,因为 GeoJSON Polygons 需要额外的数组包装器。即 [[ [<long>, <lat>] ]]
使网格坐标格式无效。
如果您的文档是 GeoJSON 格式,并且您想要 select 一个区域,您可以使用 $geometry。
db.places.find(
{
'geometry': {
$geoWithin: {
$geometry: {
type : "Polygon" ,
coordinates: [ [ [ 0, 0 ], [ 3, 6 ], [ 6, 1 ], [ 0, 0 ] ] ]
}
}
}
}
)
值得注意的是,MongoDB Compass 地理空间可视化当前 (v1.6) 尚不支持 GeoJSON。
答案如下:
$box 可以使用 GeoJSON,但不能使用多边形!您需要使用 $box 生成一个几何图形。
此外,它总是必须有起点和点,所以一个 4 点多边形将有 5 个坐标元组
但它变得更棘手,它必须遵循右手法则(逆时针方向)。
使用 $BOX 和点测试 GEOJSON
我的查询:
{
geometry: {
$geoWithin: {
$box: [
[ -71.934034, 38.764826 ],
[ -75.995762, 43.802038 ]
]
}
}
}
伙计们,我正在尝试通过边界框查询内部的所有多边形,但它只是 returns 0.. 它应该返回许多多边形!
或者,我尝试查询一个更大的边界框,但没有任何反应!
我的查询是:
{
geometry:
{ $geoWithin:
{ $box:
[ [-73.995762,40.764826], [-73.934034,40.802038] ]
}
}
}
请注意,同一个查询 returns 是 Point
to query all the polygons inside by bounding box but it simply returns 0
$box operator for $geoWithin only supports documents based on grid coordinates and does not support GeoJSON 形状格式。
the very same query returns a valid result for geometries of type Point
根据您的文档结构以及您查询它们的方式,这可能被视为网格坐标,即 {geometry: [<long>, <lat>]}
这可能不适用于您的多边形文档,因为 GeoJSON Polygons 需要额外的数组包装器。即 [[ [<long>, <lat>] ]]
使网格坐标格式无效。
如果您的文档是 GeoJSON 格式,并且您想要 select 一个区域,您可以使用 $geometry。
db.places.find(
{
'geometry': {
$geoWithin: {
$geometry: {
type : "Polygon" ,
coordinates: [ [ [ 0, 0 ], [ 3, 6 ], [ 6, 1 ], [ 0, 0 ] ] ]
}
}
}
}
)
值得注意的是,MongoDB Compass 地理空间可视化当前 (v1.6) 尚不支持 GeoJSON。
答案如下:
$box 可以使用 GeoJSON,但不能使用多边形!您需要使用 $box 生成一个几何图形。
此外,它总是必须有起点和点,所以一个 4 点多边形将有 5 个坐标元组
但它变得更棘手,它必须遵循右手法则(逆时针方向)。
使用 $BOX 和点测试 GEOJSON
我的查询:
{
geometry: {
$geoWithin: {
$box: [
[ -71.934034, 38.764826 ],
[ -75.995762, 43.802038 ]
]
}
}
}