我对Mongo C#驱动程序是个新手,我正尝试在C#中创建一个交集查询。我的函数在Javascript中可以正常工作,但在Mongo驱动程序中的一些类中我遇到了困难。
目前,我可以很好地执行GeoJson,但是当我创建要传递给intersect查询的对象时,似乎没有正确的参数。目前,我正在使用以下帖子对我的过滤器进行建模:Loading polygons from MongoDB that entirely contain a known polygon
如何将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 shell中使用的JavaScript查询:
db.MapPoints.find({ "GeoPoint.coordinates": { $geoIntersects: { $geometry: region.GeoJson.geometry } } })
发布于 2016-05-23 01:00:36
我创建了Mongo驱动程序测试类的快速修改,以获得前进所需的对象。我不确定这是否适用于我所有的多边形,但它已经克服了当前的问题。如果其他人有更好的方法,请分享。谢谢!
private GeoJsonPolygon<GeoJson2DCoordinates> GetMongoPolygon(string json)
{
return BsonSerializer.Deserialize<GeoJsonPolygon<GeoJson2DCoordinates>>(json);
}
https://stackoverflow.com/questions/37376163
复制相似问题