我有一个已转换为GeoHash的经度/纬度坐标列表。我的目标是识别据报道在水上(海洋,海洋等在任何国家边界之外)的点。我也有一个数据集,也将世界各国在经纬度上的所有边界形状都转换为GeoHash。
因此,对于给定的GeoHash点,我试图将其分类为是否(国际)水上。我考虑过在海洋中间手动拾取点,并使用一个简短的GeoHash前缀在海洋中创建一个大盒子,但这是相当有限的。
也许通常有一种方法可以理解在任何国家/地区边界之外成为GeoHash点意味着什么?
答案 0 :(得分:0)
这不是好好利用geohash。 Geohash擅长识别特定点,但不擅长描述诸如国家边界或海洋之类的复杂形状。
我想过要手动在大洋中 使用较短的GeoHash前缀在海洋中创建一个大盒子,但是 那是相当有限的。
是的,这将导致非常不精确的结果。您需要测试每个点,无论它是否属于任何国家的多边形。您如何执行此操作取决于您使用的平台,例如在SQL中,您运行ST_Intersects(point, country)
查询。
我只是将geohash转换回经/纬对并进行检查。
如果您确实想使用geohash或有太多(十亿个)点,可以使用简短的GeoHash前缀技巧-但您需要使用很多前缀来表示每个海洋。使用前缀树,如下所示:
一旦构建了这样的树,您就可以使用GeoHash在此树中快速查找答案。