如何仅获取 H3 中 hexRing() 外边缘的顶点?

How can I get vertices for only the outside edges of a hexRing() in H3?

要点非常简单,即使实现不是...


我想得到 hexRing 的外边,而不是六边形的所有边。几乎从环的外边缘创建一个包含其内部所有内容的多边形。目前我们可以使用 geojson2h3.h3SetToFeature(),它使用 h3SetToMultiPolygon() 来创建那个多边形。

这看起来像:

六角环多边形:

相反,我只想获得外边,如下所示:

外侧边缘:

我目前正在使用

为了只实现一个外边界,但是,由于该区域中包含的六边形数量,此功能的性能特征在各种情况下无法在移动设备上使用. hexRing() 可以使用最少数量的六边形。


如何实现?

以 H3 为中心的答案是使用 K 环,正如您所建议的,但这肯定是更多的计算(在计算六边形集和计算轮廓时可能都较慢)。

这里的简单答案是使用 h3SetToMultiPolygon 的输出并简单地从 geojson 中删除第二个环。 geojson 格式为

{
  "type": "Feature",
  "geometry": {
    "type": "MultiPolygon",
    "coordinates": [
      // list of polygons, there's only one in your case
      [
        // list of loops: first is outline, the rest are holes
        [...],
        [...]
      ]
    ]
  }
}

所以你需要做的就是设置

geojson.geometry.coordinates[0] = [geojson.geometry.coordinates[0][0]]

将多边形设置为仅外环,去掉洞(未经测试,但我认为是正确的)。