我的问题类似于这个给定一组多边形和一系列点,找出哪些多边形是点所在
我有一个 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