1

Mongo C# ドライバーは初めてで、C# でインターセクト クエリを作成しようとしています。関数は Javascript で動作していますが、Mongo ドライバーの一部のクラスで苦労しています。

現時点では、GeoJson を正常にプルしていますが、インターセクト クエリに渡すオブジェクトを作成するときに、正しいパラメーターがないようです。現時点では、次の投稿を使用してフィルターをモデル化しています: 既知のポリゴンを完全に含む MongoDB からポリゴンを読み込む

geojson 文字列を「座標」のリストに変換して、GeoJsonLinearRingCoordinates オブジェクトを作成するにはどうすればよいですか?

使用しようとしているポリゴンの例を次に示します (オハイオ州キャロル郡)。

{[  [    
  [      -80.861994,      40.599404    ],    
  [      -80.863567,      40.555411    ],    
  [      -80.92092,      40.556315    ],    
  [      -80.924566,      40.467975    ],    
  [      -80.940153,      40.468349    ],    
  [      -80.941911,      40.4247    ],    
  [      -81.100097,      40.428928    ],    
  [      -81.212309,      40.433457    ],    
  [      -81.269951,      40.433486    ],    
  [      -81.264744,      40.565042    ],    
  [      -81.321659,      40.566648    ],    
  [      -81.317739,      40.651579    ],    
  [      -81.24125,      40.650534    ],    
  [      -81.237227,      40.723542    ],    
  [      -81.198599,      40.729172    ],    
  [      -81.087289,      40.727816    ],    
  [      -80.917172,      40.726934    ],    
  [      -80.918125,      40.643464    ],    
  [      -80.860822,      40.64257    ],    
  [      -80.861994,      40.599404    ]  
]]}

Mongo シェルで使用している JavaScript クエリは次のとおりです。

db.MapPoints.find({ "GeoPoint.coordinates": { $geoIntersects: { $geometry: region.GeoJson.geometry } } })
4

1 に答える 1

1

先に進むために必要なオブジェクトを取得するために、Mongo ドライバー テスト クラスの簡単な変更を作成しました。これがすべてのポリゴンで機能するかどうかはわかりませんが、現在の問題は解決しています。他の誰かがこれを行うためのより良い方法を持っている場合は、共有してください。ありがとう!

    private GeoJsonPolygon<GeoJson2DCoordinates> GetMongoPolygon(string json)
    {
        return BsonSerializer.Deserialize<GeoJsonPolygon<GeoJson2DCoordinates>>(json);
    }
于 2016-05-22T17:00:35.807 に答える