对于 H3 的不精确地理查询,我们可以认为五边形等于六边形吗?
For imprecise geoquerying with H3, can we consider pentagons equal to hexagons?
如果我们使用kRing(H3Index origin, int k, H3Index* out)
函数来获取周围的六边形,并且我们将在客户端上优化结果(即haversine),我们永远不必担心五边形,我们要不要?因为,据我所知,五边形也有 H3 索引,并且就所有意图和目的而言,就像六边形一样对待,对吗?
关心五边形的是hexRange(H3Index origin, int k, H3Index* out)
函数,对吗?
出于一些 意图和目的,是的,五边形只是删除了一个轴向尺寸的六边形。它们具有正常的 H3 索引表示,可以与大多数将 H3 单元格作为输入的函数一起正常工作,并且在您描述的情况下应该没问题。主要考虑因素是:
- 他们只有 5 个邻居,因此假设有 6 个邻居的任何代码都可能不正确
- 它们 return 来自
h3ToGeoBoundary
的 5 个顶点,或奇数分辨率的 10 个顶点(考虑到二十面体边缘的失真)
- 它们的面积大约是最小六边形单元的面积的 5/6。
- 如果在 运行
kRing
时遇到五边形,则无法再对 returned 集的形状做出任何假设 - 例如与只遇到六边形相比,排列不同的单元格可能更少。
- 某些函数(
hexRange
、hexRing
和其他一些函数)在遇到五边形时会失败并显示错误代码。 hexRange
特别是一种快速的 kRing
算法,kRing
在幕后使用该算法,如果遇到五边形,则回退到缓慢但正确的算法。如果性能非常重要并且您愿意处理故障,您应该只使用 hexRange
。不处理五边形的函数通常在文档中明确指定。
如果我们使用
kRing(H3Index origin, int k, H3Index* out)
函数来获取周围的六边形,并且我们将在客户端上优化结果(即haversine),我们永远不必担心五边形,我们要不要?因为,据我所知,五边形也有 H3 索引,并且就所有意图和目的而言,就像六边形一样对待,对吗?关心五边形的是
hexRange(H3Index origin, int k, H3Index* out)
函数,对吗?
出于一些 意图和目的,是的,五边形只是删除了一个轴向尺寸的六边形。它们具有正常的 H3 索引表示,可以与大多数将 H3 单元格作为输入的函数一起正常工作,并且在您描述的情况下应该没问题。主要考虑因素是:
- 他们只有 5 个邻居,因此假设有 6 个邻居的任何代码都可能不正确
- 它们 return 来自
h3ToGeoBoundary
的 5 个顶点,或奇数分辨率的 10 个顶点(考虑到二十面体边缘的失真) - 它们的面积大约是最小六边形单元的面积的 5/6。
- 如果在 运行
kRing
时遇到五边形,则无法再对 returned 集的形状做出任何假设 - 例如与只遇到六边形相比,排列不同的单元格可能更少。 - 某些函数(
hexRange
、hexRing
和其他一些函数)在遇到五边形时会失败并显示错误代码。hexRange
特别是一种快速的kRing
算法,kRing
在幕后使用该算法,如果遇到五边形,则回退到缓慢但正确的算法。如果性能非常重要并且您愿意处理故障,您应该只使用hexRange
。不处理五边形的函数通常在文档中明确指定。