Mongodb: проверьте, находится ли точка внутри сохраненного многоугольника

Я новичок в свойствах геолокации mongodb.

Я сохранил несколько полигонов, которые представляют границы страны в базе данных вместе с названием страны. Теперь то, что я хотел бы сделать, это проверить, в какой стране находится точка. Например, если я даю свою собственную геолокацию, я бы хотел получить страну, где я.

Есть ли способ сделать это с помощью mongodb? Может быть, с geoWithin?

Спасибо

Ответ 1

Данные о местоположении должны храниться как эта схема:

{"loc":
     {"coordinates":[
       [
         [1.0,1.0],
         [1.0,10.0],
         [10.0,10.0],
         [10.0,1.0],
         [1.0,1.0]
       ]
      ],
     "type":"Polygon"
   }
}

а затем отправьте $geoIntersects запросы

db.polygons.find({"loc":{"$geoIntersects":{"$geometry":{"type":"Point", "coordinates":[x, y]}}}}

Ответ 2

Для этого вам нужно использовать $geoIntersects.

db.features.find({mystoredpolygon:{$geoIntersects:{$geometry:{type:'Point', coordinates:[22,38]}}}})

Ответ 3

Да, вы можете использовать $geoWithin для проверки, если вы определяете страны как полигоны с помощью GeoJSON. Для этого попробуйте этот репозиторий GitHub.