我的问题类似于这个给定一组多边形和一系列点,找出哪个多边形是点所在。
我有一个包含两个集合的mongodb数据库,regions存储一组多边形(意大利各省),points存储一组具有坐标对的样本。我使用MongoDB2.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上使用它--它看起来不再受支持了。
@RickyA谢谢,我会考虑搬到postgis
发布于 2014-12-02 08:47:05
$geoIntersects在mongodb地理空间图书馆中就是这样做的。
https://stackoverflow.com/questions/16101132
复制相似问题