为 3L 前缀生成所有 4L geohashes

问题描述

有没有办法生成给定 3L geohash 的所有 4L geohash?我一直在使用 gh_to_spdf() 创建一个 geohash 单元,然后使用 gh_covering() 获取该 spdf 中的所有 geohash。

示例:

library(geohashTools)

# Goal: find all valid 5-digit geohashes inside "u17b"

# Create rectangle spdf
poly_4L <- gh_to_spdf("u17b")

# Find geohashes covered by u17b
in_poly_4L <- gh_covering(poly_4L,5L,minimal = TRUE)
hash_5L <- row.names(in_poly_4L)

table(substr(hash_5L,1,4))
# u17b u17c u1k0 u1k1 
# 32    8    4    1 

这方面的 2 个关键问题:

  1. u17b 的非成员与 u17b 相交(可能是 spdf 中的舍入问题);这可以通过过滤具有正确前缀的那些来处理,但会增加开销;和

  2. 为此目的很慢(使用 gh_covering() 对随机多边形非常有意义)。

有没有办法在不使用 spdf 查看二维空间的情况下获取 geohash 前缀的所有成员?考虑到对数百万个点进行 geohash 所需的时间很短,这似乎应该成为可能。我尝试了蛮力方法 here,但 Lyngbakr 指出的问题是有效的,并且很快就会导致问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)