当我运行mongoDB查询时,我得到的错误是'经度/纬度超出范围。
以下是我的查询:
$appid = "xxxxxxxxxxxxxxx";
$appsecret = "yyyyyyyyyyyyyyyyyyyyyyyyy";
//get it from your dashboard
$token = $appid .|. $appsecret key
这是我的mongoDB查询:
DBObject query = new BasicDBObject("loc",
new BasicDBObject("$geoWithin",
new BasicDBObject("$geometry",
new BasicDBObject("type","Polygon").append("coordinates", polygon))));
我收到此错误输出:
db.collection_name.find(
{ "loc" :
{ "$geoWithin" :
{ "$geometry" :
{ "type" : "Polygon" , "coordinates" : [ [ [ 44.67047 , 136.01075] , [ 77.05318 , 33.59619] , [ 13.04135 , -22.31323]]]
}
}
}
}
)
我该如何解决这个问题?谢谢你的回答。
答案 0 :(得分:1)
"经度/纬度超出范围,lng:44.6705 lat:136.011"
您需要按经度顺序指定纬度。纬度的有效范围是-90
和+90
。您的136.011
纬度值超出范围。
"循环未关闭"
要为$geometry指定地理空间查询,您需要关闭GeoJSON Polygon循环才能创建多边形形状。
例如:
{
type: "Polygon",
coordinates: [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] ]
}
请注意,第一个和最后一个坐标是匹配的,以便关闭多边形形状。
以上假设您指的是GeoJSON polygons with a single ring。