我的问题类似于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