1
我得到了一些geoJSON文件,我把它放到MongoDB库中。 geoJSON模式是标准化的,所以我希望不会改变它。 geoJSON文件代表由一组区域(多边形)定义的标记 标记可能包含多个多边形 不同的标记可能包含相同的区域或多边形。如何在geoJson中找到保存在MongoDB中的多边形
的GeoJSON的文件是这样的:
{
"_id": {
"$oid": "5570864ee4b08fb4e548beb6"
},
"type": "FeatureCollection",
"crs": {
"type": "name",
"properties": {
"name": "urn:ogc:def:crs:OGC:1.3:CRS84"
}
},
"features": [
{
"type": "Feature",
"properties": {
"ida": "2335",
"name": "myName",
...,
"surf_m2": 13432292
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [
[
[
[
-1.366403393656118,
47.19539498257428
],
[
-1.357701323667323,
47.19374649592587
],
[
-1.357566935700819,
47.1932311120653
],
[
-1.357111040694128,
47.192966611925904
],
...
]
]
]
}
}
]
}
图片我有许多文件是这样的。
如何查询shell中的mongoDB以查找基础中可用的多边形内的区域(通过名称,ID或其他)。
我已经tryed这一点:
db.Collection.find({"features":{"$geoIntersects":{"$geometry":{"type":"Point", "coordinates":[-1.3545706,47.166627 ]}}}})
或者
db.runCommand({ geoNear : "Collection" ,near : { type : "Point",coordinates:[-1.3545706,47.166627]},spherical : true }
我的问题是,我是不是能够达到的坐标,因为它不是在根级别的直接访问,但在功能.geometry.coordinates。
帮助...
支持MongoDB的GeoJSON对象被列出和[在这里解释](http://docs.mongodb.org/manual/reference/geojson/)。基本上,您可以做的最好的事情是将其分解为[GeomeryCollection](http://docs.mongodb.org/manual/reference/geojson/#geometrycollection)对象,因为不支持FeaturesCollection。 –
@ user3561036,好的,你会这样做运行时还是通过创建一个匹配更多查询的新集合? – Anthony
由于查询选项需要“索引”,因此不能“在运行时执行”。这意味着收集数据已经需要以该形式存储。您可以使用支持的方式存储它,并让MongoDB完成工作,或者卸载到另一个服务来处理存储的数据,在那里执行“咕噜工作”。我喜欢(合理)大型铁数据库服务器自己做出的咕噜声。 –