搜索包含mongodb中一系列点的所有多边形

时间:2013-04-19 09:11:46

标签: mongodb geojson

我的问题类似于Given a set of polygons and a series of points, find the which polygons are the points located

我有一个mongodb数据库,有两个集合,区域,用于存储一组多边形(意大利省份),用于存储一组样本,每个样本都带有一个坐标对。我使用mongodb 2.4和GeoJSON格式来存储数据,两个集合都有一个2dsphere索引。

我能够找到给定点是否在给定的多边形内。

现在我想找到包含标本列表的所有多边形,绘制这样的地图http://www.peerates.org/province.png

有没有比迭代所有点更好的解决方案,并检查它是否在每个多边形内部,利用mongodb geoindexes?

编辑: 我使用存储在system.js集合中的函数找到了部分解决方案

 function(){
    var found = [];
    var notfound = [];
    db.regions.find().forEach(
        function(region){
            var regionId = region._id;
            var query = {
                    'loc':{
                        $geoWithin: {
                            $geometry: region.loc
                        }
                    }
                };
            var len = db.points.find(query).size();
            if(len>0){
                found.push(regionId);
            }else{
                notfound.push(regionId);
            }
        }
    );
    return {
        "found":found,
        "notfound":notfound
    };
}

遗憾的是我不能在mongohq.com上使用它看起来不再支持eval()。

@RickyA谢谢你,我会考虑搬到postgis

1 个答案:

答案 0 :(得分:0)

mongodb geospatial library中有$geoIntersects可以做到这一点。