如何获取边界框/多边形内所有部分相交的H3网格单元索引
解决H3获取所有与边界框相交的网格单元问题
要获取所有至少部分位于边界框内的H3网格单元,你需要修改h3.polygonToCells()的调用参数,开启包含部分相交单元的选项:
核心解决方案
使用includePartial: true配置项,让方法返回所有与边界框有交集的单元,而不仅仅是中心落在框内的单元。同时确保多边形坐标是闭合的(最后一个点和第一个点一致):
const coords = [ [51.55, -0.01], [51.45, -0.01], [51.45, -0.16], [51.55, -0.16], ]; // 闭合多边形:添加第一个点作为最后一个点 const closedPolygon = [...coords, coords[0]]; const RESOLUTION_LEVEL = 3; // 开启includePartial选项 const cells = h3.polygonToCells(closedPolygon, RESOLUTION_LEVEL, { includePartial: true }); console.log("cells", cells); // 现在会返回所有与边界框相交的3级单元
问题原因解释
- 默认情况下,
h3.polygonToCells()只返回中心位于多边形内部的网格单元。分辨率3的H3单元尺寸很大,你的伦敦中心边界框不足以包含任何3级单元的中心,因此返回空数组;而分辨率7的单元尺寸小,大量单元的中心落在框内,所以能返回结果。 - 当设置
includePartial: true时,方法会检测所有与多边形边界有交集的单元,无论其中心是否在框内,这样就能覆盖所有至少部分位于边界框内的网格。
内容的提问来源于stack exchange,提问作者jam3
相关产品推荐
相关产品推荐

