mongodb错误:'经度/纬度超出范围

时间:2017-03-13 21:40:57

标签: mongodb

当我运行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]]]

                }
            }
        }
   } 
)

我该如何解决这个问题?谢谢你的回答。

1 个答案:

答案 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