2

多角形 (単純なボックス) 内のアイテムのマッチングの問題に悩まされています。クエリされたボックス内にあるアイテムが結果にならない理由がわかりません。だからここに私が持っているもの:

>db.testing.getIndexes();
{
    "0" : {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "ns" : "test.testing",
        "name" : "_id_"
    },
    "1" : {
        "v" : 1,
        "key" : {
            "point" : "2dsphere"
        },
        "ns" : "test.testing",
        "name" : "2dsphere_index"
    }
}

これが私のドキュメントです(さまざまな形式をテストしました):

>db.testing.find();
{
    "_id" : ObjectId("5439c9c61120c95f4c50a369"),
    "point" : {
        "lng" : -80.087535,
        "lat" : 42.054246
    }
}
{
    "_id" : ObjectId("5439cc6d1120c95f4c50a36a"),
    "point" : {
        "type" : "Point",
        "coordinates" : [
            -80.087535,
            42.054246
        ]
    }
}

そして、ここにクエリがあります:

>db.testing.find({"point": {"$geoWithin": {
    "$geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [-80.267831,42.050312],
            [-80.267831,45.003652],
            [-73.362579,45.003652],
            [-73.362579,42.050312],
            [-80.267831,42.050312]
          ]
        ]
      }
}}})

しかし問題は、それがゼロの結果を返すことです!
よくわからない場合は、これをコピーするよりも、その点が実際には正方形になっています。

{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[-80.087535,42.054246]},{"type":"Polygon","coordinates":[[[-80.267831,42.050312],[-80.267831,45.003652],[-73.362579,45.003652],[-73.362579,42.050312],[-80.267831,42.050312]]]}]}

ここで確認してください

私は混乱しています、誰かがこれを手伝ってくれませんか?
前もって感謝します!

更新:
また、これらのポイントは、たとえば次のようにポリゴン領域を減らすと見つかります。

[[-80.159937,42.050312],[-80.05204,42.050312],[-80.05204,42.09646],[-80.159937,42.09646],[-80.159937,42.050312]]

必要であれば、そのようなポイントを 100 ほど提供できます。たとえば、もう 1 つの奇妙な点:

{"type":"Point","coordinates":[-76.537071,42.058731]}

更新:
これは、ポイント コレクション ダンプ (約 700 ポイント) を含むファイルです。

4

1 に答える 1

1

MongoDB (2d sphere index) はGeodesicを使用してポリゴンを構築します。これは、2 点間の最短ラインを意味します。

これは球上でどのように見えるかです:
球体の説明

そして、これはプレーンでどのように見えるかです:
平易な説明

ズームインした画像は、その点が実際には正方形ではないことを示しています: 拡大したプレーンの説明

于 2014-10-15T19:45:01.170 に答える