从MongoDB加载完全包含已知多边形的多边形

时间:2014-12-23 12:43:22

标签: c# mongodb geojson

我们在MongoDB中存储了一组GeoJsonPolygons,我们正在使用C#与Mongo进行交互。

之前我们使用以下方法加载包含GeoJson.Point的多边形:

var point = GeoJson.Point(GeoJson.Geographic(known.Longitude, known.Latitude));
var query = Query<OurStoredPolygons>.GeoIntersects(x => x.Polygon, point);
var polygonsThatContainTheKnownPoint = collection.FindAs<OurStoredPolygons>(query);

现在我想加载多边形,如果另一个已知多边形完全在其中。我可以做类似的操作:

var linearRingCoordinates = new GeoJsonLinearRingCoordinates<GeoJson2DCoordinates>(coordinates);
var polygonCoordinates = new GeoJsonPolygonCoordinates<GeoJson2DCoordinates>(linearRingCoordinates);
var geoCircle = new GeoJsonPolygon<GeoJson2DCoordinates>(polygonCoordinates);
var query = Query<OurStoredPolygons>.GeoIntersects(x => x.Polygon, geoCircle);
var geofences = collection.FindAs<OurStoredPolygons>(query);

但是这个查询将加载任何与测试点重叠甚至共享边缘的多边形。我只想要完全包含测试点的多边形。

我想我可以测试多边形边缘中的每个点来加载包含它的多边形,然后将结果减少到只有每个结果共有的存储多边形,但这似乎是一个非常慢的操作(具有大的测试多边形和许多数据库中的多边形

是否可以在Mongo中进行查询? (或者确实在C#中)

0 个答案:

没有答案