什么是一些有效的Geohash边界框覆盖算法?

时间:2013-08-19 23:07:02

标签: map geolocation gis geospatial geohashing

我的要求是:

给定一个lat-lon边界框,返回一组地理位置,以便:

  • 集合中的地理位置数应该很小(1到5个geohash
    矩形)如果可能的话。
  • 覆盖范围应与输入的lat-lon边界框关闭 可能。容差约为+/- 10%。可以覆盖和/或覆盖一点点。
  • 它应该是高效的并且可以在移动设备上执行

我对算法或概念方法最感兴趣。如果不存在开源实现,我计划在Android / iOS的Java / Obj-C中实现它。

1 个答案:

答案 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)不会有问题。