我刚开始接触mongodb地理位置特性。
我在数据库中存储了一些代表国界的多边形和对应的国家名称。现在我想要检查一个点位于哪个国家。例如,如果我提供我的地理位置,我希望得到我所在的国家。
有没有用mongodb实现这个功能的方法?也许可以使用geoWithin?
谢谢
我刚开始接触mongodb地理位置特性。
我在数据库中存储了一些代表国界的多边形和对应的国家名称。现在我想要检查一个点位于哪个国家。例如,如果我提供我的地理位置,我希望得到我所在的国家。
有没有用mongodb实现这个功能的方法?也许可以使用geoWithin?
谢谢
{"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]}}}}
您需要使用$geoIntersects
来实现此功能。
db.features.find({mystoredpolygon:{$geoIntersects:{$geometry:{type:'Point', coordinates:[22,38]}}}})
是的,您可以使用$geoWithin
进行检查,只要您使用GeoJSON
将国家定义为多边形。为此,请尝试此 GitHub 存储库。
$geoIntersects
而不是$geoWithin
。$geoIntersects
地理空间查询功能来执行以下查询。db.neighborhoods.findOne({
geometry: {
$geoIntersects: {
$geometry: {
type: "Point",
coordinates: [ -73.93414657, 40.82302903 ]
}
}
}
})
在这里,neighborhood
是你的集合,其中存储了你所在国家的多边形。查询的第二行中的 geometry
是存储在数据库中的实际多边形(即 Geo-Json 格式)。而 $geometry
中的 "Point"
则是你想要查找所在国家的当前位置。