从一组地理位置计算边界

时间:2014-11-22 14:32:34

标签: php mongodb geolocation geospatial geo

我有纬度和经度列表。

这些是从反向拉链查找数据库获得的,它位于特定城市(Dayton,OH)下。

39.721286   -84.133892
39.760000   -84.195900
39.757800   -84.177700
39.845339   -84.123287
...

我在mongodb中有一个属性数据库,每个属性都有定义的位置(lat / lng),当用户输入" Dayton,OH"时,我抓住了Dayton的全部内容具有相关地理坐标的邮政编码以及我想要做的是创建一个边界并向其添加5英里并搜索覆盖纬度/纬度代码的属性数据库。

使用此坐标列表创建边界(正方形/圆形)以搜索范围内的数据库的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

您可以在MongoDB中使用$ near运算符。

例如:

db.cities.find( { loc : { $near : { $geometry : { type : "Point" , coordinates : [ lon, lat] }, $maxDistance : 1/111.12 } } } )

上述查询会在1公里范围内捕捉特定坐标附近的所有内容(请参阅$ maxDistance)。

有关$ near运算符的更多信息,请查看MongoDB Manual

答案 1 :(得分:0)

找到解决方案,显然最好的方法是使用“凸包”算法然后查询从应用程序端计算边界。