У меня есть файлы 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
],
...
]
]
]
}
}
]
}
Image У меня есть много документов, как это.
Как я могу запросить mongoDB в оболочке, чтобы найти область (по имени, id или что-то еще), которые находятся внутри полигонов, доступных в базе.
Я судимое это:
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.
Помощь ...
Поддерживаемые объекты GeoJSON для MongoDB перечислены и [объяснены здесь] (http://docs.mongodb.org/manual/reference/geojson/). В основном лучшее, что вы можете сделать, это разбить это на объекты [GeomeryCollection] (http://docs.mongodb.org/manual/reference/geojson/#geometrycollection), поскольку FeaturesCollection не поддерживается. –
@ user3561036, нормально, так бы вы сделали это время выполнения или создав новую коллекцию, соответствующую больше запросу? – Anthony
Вы не можете «делать во время выполнения», потому что для параметров запроса требуется «индекс». Это значит, что данные коллекции уже должны храниться в этой форме. Вы либо сохраняете его поддерживаемым способом, либо позволяете MongoDB выполнять эту работу, либо выгружать другую службу для обработки хранимых данных, где это делает «работу с ворчанием». Мне нравятся (разумно) большие серверы баз данных железа, чтобы справиться с этим. –