Mongodb:检查点是否在存储的多边形内

Ski*_*key 18 polygon geolocation mongodb

我是mongodb地理位置功能的新手.

我在数据库中存储了一些代表国家边界的多边形以及国家/地区名称.现在我想做的是检查一个点在哪个国家.例如,如果我给自己的地理位置,我想得到我所在的国家.

有没有办法用mongodb做到这一点?也许与geoWithin?

谢谢

小智 7

您必须存储您的位置数据,如此架构:

{"loc":
     {"coordinates":[
       [
         [1.0,1.0],
         [1.0,10.0],
         [10.0,10.0],
         [10.0,1.0],
         [1.0,1.0]
       ]
      ],
     "type":"Polygon"
   }
}
Run Code Online (Sandbox Code Playgroud)

然后发送$geoIntersects查询

db.polygons.find({"loc":{"$geoIntersects":{"$geometry":{"type":"Point", "coordinates":[x, y]}}}}
Run Code Online (Sandbox Code Playgroud)


gts*_*ouk 5

你必须使用$geoIntersects它.

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


Sim*_*Sim 4

是的,您可以用于$geoWithin检查,前提是您使用 将国家/地区定义为多边形GeoJSON。为此,请尝试此 GitHub 存储库