0

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

图片

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

这很棒,但是我想根据总平均值显示变化。一个示例结果类似于此 Google 日历图表,但使用 Hexagon 层,显示与平均值的百分比差异:

在此处输入图像描述

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

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

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

手动操作可能需要一个循环h3.geo_to_h3(latitude, longitude, level),如果可能的话我想避免

4

1 回答 1

1

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

我认为您实际上确实需要做您所描述的事情:

  • 使用 索引数据中的所有行h3.geoToH3。即使在浏览器中,这通常是每秒 1000 次操作的 100 次,因此它可能比您想象的要便宜。
  • 计算指标列的总体平均值,然后计算平均值与每行的偏差。
  • 将预先计算的数据传递给 Deck.gl 进行渲染。
于 2021-04-15T15:51:18.340 回答