私の質問はこれに似ていますポリゴンのセットと一連のポイントが与えられた場合、どのポリゴンがポイントであるかを見つけます
私は 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への移行を検討します