Python H3 Geo 3.x中h3_distance函数的度量含义及计算疑问
H3
h3_distance 含义及你的计算疑问 h3.h3_distance(A, B)返回的是两个H3网格单元之间的最短网格路径步数:也就是从单元A到单元B,沿着共享边的相邻六边形前进的最少步数,它不是直接的地理距离。你遇到的数值和单位差异,问题出在两点:
- 单位换算错误:你提到的实际直线距离是15.5英里,换算成公里约为24.94km,但你用200×0.07586km得到的是15.17km,这两个数值不属于同一单位体系,直接对比没有意义。如果把15.17km换算成英里约为9.43英里,和你说的15.5英里不符,这说明你可能看错了H3官网的边长单位——大概率是把英制单位(比如英尺)当成了公里。
- 网格步数≠直线距离的直接倍数:H3的网格步数对应的是网格路径的总长度(步数×单个六边形的边长度),而不是两点的直线距离。六边形网格的最短路径是沿着网格边的折线,和直线距离存在天然差异:长距离下,网格路径长度会接近直线距离,但永远不会完全相等,具体差异取决于路径的方向(和六边形网格的轴向是否一致)。
补充验证建议:
- 先确认H3官网表格的单位:公制下分辨率10的平均边长度约为0.108km(108米),如果用200×0.108km得到21.6km,换算成英里约为13.4英里,和你说的15.5英里的差异,就是网格路径和直线距离的天然差距。
- 可以用
h3.h3_to_geo()获取两个H3单元的中心坐标,直接计算中心之间的直线距离,再和网格路径长度对比,就能更清晰看到差异。
内容的提问来源于stack exchange,提问作者milton
相关产品推荐
相关产品推荐

