1

我刚开始使用 Uber 的 h3geo (JavaScript),并且在每个分辨率下获得的索引数量是文档建议的一半。

const nw = [-180,  90];
const ne = [ 180,  90];
const se = [ 180, -90];
const sw = [-180, -90];
let rect = [nw, ne, se, sw];
const res = 0;
const grid = h3.polyfill(rect, res);
console.log(grid.length);
// res 0 output → 61, should output 122
// res 1 output → 421, should 842
// res 2 output → 2951, should 5882
// res 3 output → 20580; should output 41162
// and so on

我究竟做错了什么?

此外,h3geo 区域文档显示lat第一和lng第二。如上图,我使用的是[lng, lat]. 如果我翻转它们,我总是得到grid.length0。如果我给一个 geoJson,我得到一个错误说coordinates don't have a length property. 我错过了什么?

4

1 回答 1

1

部分回答在这里,但也在这里回应可见性:

  • h3.polyfill期望[lat, lng]对,除非您传递true第三个isGeoJson参数。所以你目前正在填充反向坐标,这就是你得到错误数量的单元格的原因。
  • H3 polyfill 功能目前仅适用于宽度 < 180 度经度的形状。我们忽略缠绕顺序并尽可能使用较小的形状。如果将边界框分成两个形状,您应该会得到预期的结果。这就是为什么您没有得到[lat, lng]输入结果的原因。
  • h3-js不支持完整的 GeoJSON 输入,您需要geojson2h3处理 GeoJSON 结构。

这无疑是 H3 的文档问题,我们将尝试对其进行更新。

于 2022-01-12T18:16:51.623 回答