如何识别不在陆地上的GeoHash点?

问题描述 投票:1回答:1

我有一个已转换为GeoHash的经度/纬度坐标列表。我的目标是识别据报道在水上(海洋,海洋等在任何国家边界之外)的点。我也有一个数据集,也将世界各国在经纬度上的所有边界形状都转换为GeoHash。

因此,对于给定的GeoHash点,我试图将其归类为是否在(国际)水上。我考虑过在海洋中间手动拾取点,并使用一个简短的GeoHash前缀在海洋中创建一个大盒子,但这是相当有限的。

也许通常有一种方法可以理解在任何国家/地区边界之外成为GeoHash点意味着什么?

geospatial latitude-longitude geohashing
1个回答
0
投票

这不是很好的使用geohash。 Geohash擅长识别特定点,但不擅长描述国家边界或海洋之类的复杂形状。

我曾考虑过在海洋中手动采摘点,使用较短的GeoHash前缀在海洋中创建一个大盒子,但是这是相当有限的。

是的,这将给出非常不精确的结果。您需要测试每个点,无论它是否属于任何国家的多边形。您如何执行此操作取决于您使用的平台,例如在SQL中,您运行ST_Intersects(point, country)查询。

我只是将geohash转换回经/纬对并进行检查。

如果您确实想使用geohash或有太多(十亿个)点,则可以使用简短的GeoHash前缀技巧-但您需要使用许多前缀来表示每个海洋。使用前缀树,如下所示:

  • 以GeoHash的字母开头,
  • 对于每个可能的GeoHash字符串,计算其框是否完全由海洋或陆地包含(使用ST_Intersects或类似的精确方法)。
  • 如果整个盒子属于一类,则将其添加到前缀树中。
  • 如果不是,则添加更多字母(再次,所有可能的组合),然后递归地继续执行直到需要停止的某个限制。

一旦建立了这样的树,您就可以使用GeoHash在此树中快速查找答案。

© www.soinside.com 2019 - 2024. All rights reserved.