对于 H3 的不精确地理查询,我们可以认为五边形等于六边形吗?

For imprecise geoquerying with H3, can we consider pentagons equal to hexagons?

  1. 如果我们使用kRing(H3Index origin, int k, H3Index* out)函数来获取周围的六边形,并且我们将在客户端上优化结果(即haversine),我们永远不必担心五边形,我们要不要?因为,据我所知,五边形也有 H3 索引,并且就所有意图和目的而言,就像六边形一样对待,对吗?

  2. 关心五边形的是hexRange(H3Index origin, int k, H3Index* out)函数,对吗?

出于一些 意图和目的,是的,五边形只是删除了一个轴向尺寸的六边形。它们具有正常的 H3 索引表示,可以与大多数将 H3 单元格作为输入的函数一起正常工作,并且在您描述的情况下应该没问题。主要考虑因素是:

  • 他们只有 5 个邻居,因此假设有 6 个邻居的任何代码都可能不正确
  • 它们 return 来自 h3ToGeoBoundary 的 5 个顶点,或奇数分辨率的 10 个顶点(考虑到二十面体边缘的失真)
  • 它们的面积大约是最小六边形单元的面积的 5/6。
  • 如果在 运行 kRing 时遇到五边形,则无法再对 returned 集的形状做出任何假设 - 例如与只遇到六边形相比,排列不同的单元格可能更少。
  • 某些函数(hexRangehexRing 和其他一些函数)在遇到五边形时会失败并显示错误代码。 hexRange 特别是一种快速的 kRing 算法,kRing 在幕后使用该算法,如果遇到五边形,则回退到缓慢但正确的算法。如果性能非常重要并且您愿意处理故障,您应该只使用 hexRange。不处理五边形的函数通常在文档中明确指定。