MongoDB的地理查询 - centerSphere没有匹配

时间:2014-10-28 16:38:57

标签: java mongodb geospatial

我指定了一个查询,该查询应该为我提供特定圈子中的所有插入内容。这是我的Java代码:



....

DBCollection collRadius = mongo.getMyDB().getCollection(theCollectionName);

    List circle = new ArrayList();
    circle.add(new double[] { theLongitude, theLatitude });
    circle.add(theRaduisInMeters);
    BasicDBObject query =
        new BasicDBObject("geoposition", new BasicDBObject("$within", new      BasicDBObject("$centerSphere", circle)));
    List<DBObject> dbObList = new ArrayList<DBObject>();

    for (final DBObject venue : collRadius.find(query).toArray()) {
      dbObList.add(venue);
    }

    return dbObList;
  }
&#13;
&#13;
&#13;

我为DBObject&#34;地理位置指定了地理空间索引&#34;:

&#13;
&#13;
    coll.createIndex(new BasicDBObject("geoposition", "2dsphere"));

BasicDBObject jts = new BasicDBObject();
    BasicDBList l = new BasicDBList();
    l.add(theGeoposition.y);
    l.add(theGeoposition.x);

    jts.put("geoposition", BasicDBObjectBuilder.start().add("type", "Point").add("coordinate", l)
        .get());
&#13;
&#13;
&#13;

我的测试功能非常简单,我添加3倍相同的坐标(JTS格式):

&#13;
&#13;
new Coordinate(
            52.417612999999998,
            9.637832999999999)
&#13;
&#13;
&#13;

我正在使用以下参数检查查询:经度:9.637832999999998,纬度:52.417612999999997和半径(10. / 6371)。 我无法找到原因,为什么查询总是让我无法匹配。我将$更改为$ geoWithin,我检查了经度,纬度的正确值(JTS与MongoDB的坐标符号)。有什么想法吗?

最佳,

特隆

0 个答案:

没有答案