我知道Stackover流中有许多可用的解决方案,但看起来没有一个解决我的基本问题是-我有超过2500个经度/纬度数据-我想从sqlite存储/检索它们-根据用户输入查询最近的位置。寻找最佳解决方案
注意:我已经浏览了Finding the closest point to a given point
这是什么Geohashing所有关于如何使用Geohashing在我这个特殊的问题
我知道Stackover流中有许多可用的解决方案,但看起来没有一个解决我的基本问题是-我有超过2500个经度/纬度数据-我想从sqlite存储/检索它们-根据用户输入查询最近的位置。寻找最佳解决方案
注意:我已经浏览了Finding the closest point to a given point
这是什么Geohashing所有关于如何使用Geohashing在我这个特殊的问题
2条答案
按热度按时间jc3wubiy1#
地理散列是纬度、经度对的编码,使得彼此接近的点具有带有公共前缀的地理散列。然而,这并不适用于行星上的每个坐标,即存在Goehash对于邻近点显著变化的区域。根据散列算法,赤道附近的区域可以是这样的区域。更多详情请看这里:http://en.wikipedia.org/wiki/Geohash
对于一个相对较小的ca数据库。500个位置通过搜索0.1度间隔内的点,我能够非常快地找到离给定参考点(用户位置)最近的位置。下面是查询的代码:
字符串
如果选择了多个行,我会直接比较剩余的点(这就是scanForNearest()所做的)。在记录器(它是一个记录应用程序)检测到降落后,它足够快地找到机场。
aurhwmvo2#
考虑使用Spatialite。
SpatiaLite是一个开源库,旨在扩展SQLite核心以支持完全成熟的Spatial SQL功能。可以使用空间索引和专用函数来计算几何图形(点、线、多边形)之间的距离。