2016-06-27 8 views
1

私はmongoを使用してgeolocalizedデータを保存していますが、$ geointersectを使用してそれらを取得することを目標にしています。MongoDB geointersectは大きなポリゴンを見つけることができません

{ 
    "loc": { 
     "geometry": { 
     "type": "Polygon", 
     "coordinates": [ 
      [ 
      [ 
       -179.875, 
       -89.875 
      ], 
      [ 
       179.875, 
       -89.875 
      ], 
      [ 
       179.875, 
       89.875 
      ], 
      [ 
       -179.875, 
       89.875 
      ], 
      [ 
       -179.875, 
       -89.875 
      ] 
      ] 
     ] 
     }, 
     "crs": { 
     "type": "name", 
     "properties": { 
      "name": "urn:x-mongodb:crs:strictwinding:EPSG:4326" 
     } 
     }, 
     "type": "Feature", 
     "properties": {} 
    }, 
    "_id": "576af8e31d41c87fa1f1d04f" 
    } 

あなたは、ほぼ全世界をカバーして気づくこととして:具体的に私は私のDBに保存されているこの文書を持っています。今は$ geointersectクエリのために私が入力した座標は問題ではありません。返されることはありません...なぜ誰かが知っていますか?

私が使用しているクエリの例は次のようになります。もちろん

[ 
    { 
    "loc.geometry": { 
     "$geoIntersects": { 
     "$geometry": { 
      "type": "Polygon", 
      "coordinates": [ 
      [ 
       [ 
       13.4307861328125, 
       41.599013054830216 
       ], 
       [ 
       13.9801025390625, 
       41.599013054830216 
       ], 
       [ 
       13.9801025390625, 
       41.80407814427234 
       ], 
       [ 
       13.4307861328125, 
       41.80407814427234 
       ], 
       [ 
       13.4307861328125, 
       41.599013054830216 
       ] 
      ] 
      ] 
     } 
     } 
    } 
    }, 
    { 
    "loc": 1 
    } 
] 

クエリの座標が保存されたドキュメントでの多角形の内部に収容されている(私は意味...それは同じくらい大きいです世界)、何かの理由でそれは一致するものが見つかりません...私はちょっと失われています。

+0

同じ問題の人、解決策を見つけましたか? –

+0

残念ながら、私はしませんでした。しかし、あなたがあなたのクエリで十分に大きな領域を選択すると、それが表示されるようです。 – darkpirate

答えて

0

これを今すぐご覧ください。ポリゴンが固い地球の半球よりも大きい場合、mongoはエリア外のすべてを返します。それらの大きなpolyとcrsをgeoWithinのドキュメントでチェックしてください。

+0

私はそれについて知っていましたが、問題は... dbに保存されているポリゴンではなく、入力ポリゴンでのみ使用できます。データベース内にemisphereより大きいポリゴンがある場合は....それを取得するのは難しいです。 – darkpirate

関連する問題