2

我的问题类似于这个给定一组多边形和一系列点,找出哪些多边形是点所在

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

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

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

有没有比遍历所有点并检查它是否在每个多边形内更好的解决方案,利用 mongodb 地理索引?

编辑:我使用存储在 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

4

1 回答 1

0

mongodb 地理空间库$geoIntersects中有这样做的。

于 2014-12-02T08:47:05.877 回答