Geospatial 如何确定不在陆地上的GeoHash点?

Geospatial 如何确定不在陆地上的GeoHash点?,geospatial,latitude-longitude,geohashing,Geospatial,Latitude Longitude,Geohashing,我有一个纬度/经度坐标列表,我已经将其转换为GeoHash。我的目标是确定报告的水上点(任何国家边界以外的海洋等)。我还有一个数据集,它包含了世界上所有国家的纬度/经度边界的所有形状,也转换为GeoHash 所以对于一个给定的地理散列点,我试图将其归类为是否在(国际)水上。我想到了在海洋中部手动拾取点,并用一个短的GeHASH前缀在海洋中创建一个大的盒子,但这是相当有限的。 也许总的来说,有一种方法可以理解在任何国家边界之外作为GeoHash点意味着什么?这不是GeoHash的好用法。Geoha

我有一个纬度/经度坐标列表,我已经将其转换为GeoHash。我的目标是确定报告的水上点(任何国家边界以外的海洋等)。我还有一个数据集,它包含了世界上所有国家的纬度/经度边界的所有形状,也转换为GeoHash

所以对于一个给定的地理散列点,我试图将其归类为是否在(国际)水上。我想到了在海洋中部手动拾取点,并用一个短的GeHASH前缀在海洋中创建一个大的盒子,但这是相当有限的。
也许总的来说,有一种方法可以理解在任何国家边界之外作为GeoHash点意味着什么?

这不是GeoHash的好用法。Geohash擅长识别特定点,但不擅长描述国家边界或海洋等复杂形状

我想到了在海洋中央手动拾取点。 使用一个简短的GeoHash前缀在海洋中创建一个大盒子,但是 这是相当有限的

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

我只是将geohash转换回lat/lon对并检查它们

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

  • 从两个字母的GeoHash长度开始
  • 对于每个可能的GeoHash字符串,计算其框是否完全包含在海洋或陆地中(使用ST_Intersects或类似的精确方法)
  • 若整个框属于一个类,则将其添加到前缀树中
  • 如果没有-添加更多的字母(同样,所有可能的组合),并继续递归到某个限制,您需要停止

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

这不是GeoHash的好用途。Geohash擅长识别特定点,但不擅长描述国家边界或海洋等复杂形状

我想到了在海洋中央手动拾取点。 使用一个简短的GeoHash前缀在海洋中创建一个大盒子,但是 这是相当有限的

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

我只是将geohash转换回lat/lon对并检查它们

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

  • 从两个字母的GeoHash长度开始
  • 对于每个可能的GeoHash字符串,计算其框是否完全包含在海洋或陆地中(使用ST_Intersects或类似的精确方法)
  • 若整个框属于一个类,则将其添加到前缀树中
  • 如果没有-添加更多的字母(同样,所有可能的组合),并继续递归到某个限制,您需要停止

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

谢谢你的输入,但要详细说明/回答几个项目:现在我有红移数据(所以使用SQL)。据我所知,红移中没有本地地理空间工具可以在多边形类型的Calc中进行点操作。它是红移的,因为大约有320亿个点。这就是我使用GeoHash的原因。我不明白如何应用“对于每一个可能的GeoHash字符串,计算其框是否完全包含在海洋或陆地中(使用ST_相交或类似的精确方法)”,因为这似乎是问题的关键。谢谢。首先,生成所有可能的3个字母的geohash值,大约是30k。在一些具有空间支持的数据库中,如带有PostGIS的Postgres或Google BigQuery,测试这些值对应的点是否属于海洋。将结果导出为红移并在3个字母前缀上联接。这将给你大约78公里的误差。您可以通过使用更长的前缀(geohash box解析为陆地和海洋的混合)来改进它。感谢您的输入,但要详细说明/响应一些项目:现在我有红移数据(因此使用SQL)。据我所知,红移中没有本地地理空间工具可以在多边形类型的Calc中进行点操作。它是红移的,因为大约有320亿个点。这就是我使用GeoHash的原因。我不明白如何应用“对于每一个可能的GeoHash字符串,计算其框是否完全包含在海洋或陆地中(使用ST_相交或类似的精确方法)”,因为这似乎是问题的关键。谢谢。首先,生成所有可能的3个字母的geohash值,大约是30k。在一些具有空间支持的数据库中,如带有PostGIS的Postgres或Google BigQuery,测试这些值对应的点是否属于海洋。将结果导出为红移并在3个字母前缀上联接。这将给你大约78公里的误差。您可以通过使用更长的前缀来改进它,其中geohash box解析为陆地和海洋的混合。