从 h3 中的 Hexagon 层获取生成的十六进制数据

Get resulting hex data from Hexagon layer in h3

我一直在使用 deck.HexagonLayer 并取得了巨大的成功。这是我们如何每周显示 http 请求的屏幕截图:

目前它是一个星期数组 data = new Array(51).fill(randomLatitiude(), randomLongitude()) 我们只是根据我们想要显示的星期重新创建图层,比如 data[weekNumber]

这很好,但我想显示基于总平均值的变化。示例结果类似于 Google 日历图表,但使用六边形图层,显示与平均值的百分比差异:

计算方法是简单地获取每天的平均值并将百分比差异分配给每天的值,+% 或 -%。

六边形层有点棘手,您需要获得每个 weekNumber 的平均值,但是分配给 hex_id 的每个值应该是平均值,而不是计数。现在我找不到在创建图层时提取结果数据的方法 new deck.HexagonLayer({ id: 'hexgaon-log-layer', data: hex_locations[week], ...}) 这将允许我手动完成。

我唯一的选择是根据 hex_id 重新创建数据然后创建图层吗? 或者是否有更简单的方法来提取结果数据或设置一些选项来执行此操作?

手动执行可能需要使用 h3.geo_to_h3(latitude, longitude, level) 进行循环,我希望尽可能避免这种情况

我认为这里可能有些混乱 - HexagonLayer 是一个基于视口的 hexbin 层,不使用 H3 - 它在地图上绘制六边形,但这些六边形是动态创建的,并且没有 H3 ID。 H3HexagonLayer使用H3,将H3索引作为输入。我不认为 Deck.gl 有一个层(还)可以为您将 lat/lng 分类到 H3 地址。

我认为你确实需要做你所描述的事情:

  • 使用 h3.geoToH3 为数据中的所有行编制索引。即使在浏览器中,这通常也是 ops/sec 的 100 到 1000 的数量级,因此它可能比您想象的要便宜。
  • 计算指标列的总体平均值,然后计算每行与平均值的偏差。
  • 将预先计算好的数据传递给Deck.gl进行渲染。