You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Uber H3 Hex技术问询:无需新增索引,如何用res10六边形统计父级点位数量?

问题解答

核心结论

完全可以实现,不需要在数据库中新增其他分辨率的索引,Uber H3的编码规则天生支持这种层级嵌套的查询需求。

H3编码的关键特性

  • 层级嵌套关系:H3的高分辨率六边形是完全被包含在低分辨率六边形内的——每个res10的六边形,必然属于唯一的res9、res8一直到res0的六边形。
  • 编码前缀匹配规则:H3的字符串编码带有明确的层级前缀,低分辨率的编码是其所有高分辨率子六边形编码的前缀。比如一个res4的H3索引,它对应的所有res10子六边形的编码,前9位(res4编码的长度)完全和这个res4的编码一致。

具体查询实现

假设你的数据库表是location_points,存储res10索引的字段为h3_res10。如果要统计某个res6的六边形(索引为862a1072fffffff)内的点位数量,直接用前缀匹配即可:

SELECT COUNT(*) FROM location_points WHERE h3_res10 LIKE '862a107%';

不同分辨率对应的编码前缀长度如下:

  • res0: 1位
  • res1: 3位
  • res2: 5位
  • res3: 7位
  • res4: 9位
  • res5: 11位
  • res6: 13位
  • res7: 15位
  • res8: 17位
  • res9: 19位
  • res10: 21位

查询对应分辨率的六边形时,只需要取该分辨率的索引作为前缀,用LIKE或者数据库支持的高效前缀匹配语法过滤,就能统计出对应区域内的res10点位总数。

性能优化提示

  • 给h3_res10字段创建前缀索引:比如针对res9的查询,创建长度为19的前缀索引,能大幅提升匹配速度。
  • 批量查询时,可以把多个低分辨率索引的前缀整理成条件,用OR或者IN结合前缀匹配,避免多次单独查询。

内容的提问来源于stack exchange,提问作者Aidan Curry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 02:25:27