我的要求是:
给定一个lat-lon边界框,返回一组地理位置,以便:
我对算法或概念方法最感兴趣。如果不存在开源实现,我计划在Android / iOS的Java / Obj-C中实现它。
答案 0 :(得分:4)
github https://github.com/davidmoten/geo上的这个java项目有一个记录的算法,可以做你想要的。特别是它也可以在geohash区域的极限处(即在极点和-180/180经度线处)很好地工作。
将地理数据的数量保持在较小(1至5)以及容差保持在10%左右,我担心。只有5个地理位置,许多矩形将覆盖目标矩形区域600%的地理位置。实际上,对于以下示例,在该区域的10%范围内需要667个哈希值!
以下是从地理项目网站上的自述文件中获取的表格:
作为一个简单的例子,对于一个比例更接近的边界框 屏幕与Schenectady NY和Hartford CT在美国的角落:
以下是不同哈希长度的哈希计数:
m是总散列区域的平方度的大小,a是 边界框的区域。
length numHashes m/a 1 1 1694 2 1 53 3 4 6.6 4 30 1.6 5 667 1.08 6 20227 1.02
使用的算法是高效的,相关代码不依赖于其他工件,因此部署到支持java的移动设备(如Android)不会有问题。