比较有效的方法来获取数据库中附近的GeoPoints或GeoLocations。
假设我有超过一百万个Geo用户点,其相应的纬度和经度存储在以十进制形式存储的数据库中。我想知道这两种方法是否同样有效地在给定半径范围内获得用户的附近位置,因为我存储了很多地理点。
方法1: 我读过我可以使用空间数据库,但从未使用过。 (我能否方便地执行CRUD操作?)
方法2: (这是我希望做的,因为我从未使用过空间数据库) 我希望使用一个nosql数据库以小数形式存储超过一百万不同用户的纬度和经度。
然后获取给定位置周围的边界圆或矩形,然后在数据库中查询边界圆内的GeoPoints。 Please refer to this.!
然后按距离中心Geopoint的距离计算和排序Geopoints。
另外要知道:我正在尝试开发像超级或其他出租车服务的Android应用程序,允许用户获取附近的出租车位置。现在,我希望将所有用户位置存储在数据库中,并使用上述任一方法获取附近的用户。如果有更好的方法,请告诉我。感谢。
答案 0 :(得分:0)
你的标签非常偏离主题,因为数据库很可能是在服务器而不是应用程序中。
Postgresql允许您在基于距离给定点的距离进行查找而优化的坐标上构建索引。其他变量可能允许相同。其他数据库也可以允许相同的数据库。这非常简单而且效率很高。
否则,您确实可以将空间切割成正方形并查看正方形(在大多数情况下是相邻的正方形),以避免每次都通过整个数据库。多一点工作,而不是那么有效。整个难点在于找到正方形(或矩形)的正确尺寸。