H3 API edgeLength方法迁移后持续抛出异常求助
解决H3 4.1.1版本edgeLength方法报错的思路
问题根源
H3 4.x版本对edgeLength方法的参数要求做了重大调整:
- 3.6.0版本中,
edgeLength可以直接传入分辨率,返回对应层级六边形的边长度 - 4.1.1版本中,
edgeLength仅接受有效的有向边H3索引,不再支持分辨率参数,你传入的数值9被当作无效的有向边ID,因此触发异常
对应解决方案
根据你的实际需求选择:
1. 需求是获取指定分辨率下六边形的边长度
改用hexEdgeLength方法,这是4.x版本中替代原3.x版本edgeLength(分辨率, 单位)的方法:
h3.hexEdgeLength(9, LengthUnit.km)
2. 需求是计算具体有向边的长度
需要先生成有效的有向边H3索引,再传入edgeLength:
// 假设已有两个相邻的六边形H3索引 long fromHexId = ...; long toHexId = ...; // 生成有向边ID long directedEdgeId = h3.getDirectedEdge(fromHexId, toHexId); // 计算该有向边的长度 double length = h3.edgeLength(directedEdgeId, LengthUnit.km);
验证方法
可以先调用h3.isValidDirectedEdge(directedEdgeId)判断传入的ID是否为有效有向边,提前规避异常。
内容的提问来源于stack exchange,提问作者Scott
相关产品推荐
相关产品推荐

