3

鉴于我知道一个人所在位置的 lat/lng,我可以找到他们所在位置的 geohash。但我也想找到他们“视图”内的所有地理哈希。

因此,如果我知道纬度/经度和半径,比方说从谷歌地图视图中,我想知道该空间中包含的所有地理哈希。我知道我必须选择一些单位。假设 5 个单位,我相信每个 geohash 约为 3803m。

是否有捷径可寻?我可以想出一个粗略的算法,但我对地理哈希的了解还不够,无法完成每个步骤。

假设我们在白金汉宫(51.501364,-0.141890),我们的“视野”半径为 1 公里。

理论上我可以做到这一点。假设我有一个可以将 lat/lng 转换为 geohash 的库,反之亦然。

  1. 鉴于我们知道地图的中心,找到角落(西北 1 公里,东北 1 公里,西南 1 公里,东南 1 公里)。
  2. 然后我可以计算左上角的 geohash。ADD ~3803m East,计算 geohash。重复直到geohash等于右上角的geohash。
  3. 然后我可以沿着右侧做同样的事情,直到我到达左下角。在右侧做同样的事情。然后填充中间,从左上角下方的正方形开始,穿过直到我到达右侧。回到左边但向下一个街区,然后再穿过。回到我终于到达已知的右下角。

这可能有效,我认为它会很慢,而且不完全准确。我确信有一种更简单的方法可以做到这一点。有谁知道可以解决这个问题的公式或算法?

给定一个纬度/经度和半径(R),找到所有的geohash正方形(长度为N),它们覆盖边缘距中心R米的正方形(纬度/经度)。

谢谢!任何使用 geohashing 的部分答案或帮助/公式将不胜感激!

4

0 回答 0