2

这个要点很简单,即使实现不是......


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

这看起来像:

六边形多边形:

在此处输入图像描述

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

外边缘:

在此处输入图像描述

为了实现外部边界,我目前正在使用kRing(),但是,由于该区域中包含的六边形数量,它的性能特征在各种场景中变得无法在移动设备上使用。在哪里hexRing()可以使用最少数量的六边形。


我怎样才能做到这一点?

4

1 回答 1

3

正如您所建议的那样,以 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]]

它将多边形设置为仅外环,丢弃孔(未经测试,但我认为这是正确的)。

于 2021-02-08T18:25:40.300 回答