Python Uber h3能否以六边形网格覆盖整个地球?

Python Uber h3能否以六边形网格覆盖整个地球?,python,gis,hexagonal-tiles,h3,Python,Gis,Hexagonal Tiles,H3,Uber发布了h3,一个有效处理地理空间文件中大数据的框架。使用h3,我试图获得六边形网格位置的位置,如图所示。 我从下面的代码中得到了六边形网格的位置。然后我把它画在一张二维地图上,看看它是否覆盖了整个地球。但是,在边界上没有得到有效的六边形(-90°、90°、-180°、180°)。而且它似乎没有覆盖整个地球。 我想要覆盖整个地球的六边形的位置。在这种情况下,我使用了h3,但我不在乎多久能得到这个职位。是的,h3覆盖了整个地球。您在该图像中看到的是渲染瑕疵-取决于您在平面投影中渲染全局网

Uber发布了h3,一个有效处理地理空间文件中大数据的框架。使用h3,我试图获得六边形网格位置的位置,如图所示。

我从下面的代码中得到了六边形网格的位置。然后我把它画在一张二维地图上,看看它是否覆盖了整个地球。但是,在边界上没有得到有效的六边形(-90°、90°、-180°、180°)。而且它似乎没有覆盖整个地球。


我想要覆盖整个地球的六边形的位置。在这种情况下,我使用了h3,但我不在乎多久能得到这个职位。

是的,h3覆盖了整个地球。您在该图像中看到的是渲染瑕疵-取决于您在平面投影中渲染全局网格的方式,您可能会在极点或反球面上获得类似瑕疵。例如,请参见H3在反子午线上正确渲染的投影,尽管它在极点周围仍然存在一些问题。

填充整个地球时,会得到穿过反子午线的H3多边形。这些顶点将同时位于东半球(经度>0)和西半球(经度<0)。你可以使用例如

for line in polylines:
  if any(p[1] > 0 for p in line) and any(p[1] < 0 for p in line):
    print(line)
它跨越经度-176到173。H3假设顶点与测地(最短)路径相连,即在这种情况下,一条穿过反周边的短路径。因此,多边形应同时出现在地图的最左侧和最右侧。但当你把它交给像Folium这样的平面地图绘制工具时,它对测地线或反周边一无所知,而是画了一条横跨整个地球的长直线(地图上最短的线,而不是地球上最短的线),穿过主子午线。这是这里所有长的近水平线的来源

根据您的需要,有几种解决方案。常见的选择是固定穿过反多边形的每个多边形,在左侧或右侧绘制它。假设您将所有这些多边形向右移动,然后在所有负经度上添加360,将-176替换为184。您将得到一个小多边形,Folium应该能够“正确”绘制,尽管它会突出到180子午线的右侧(虽然我没有Folium的经验,但这是典型的行为)

for line in polylines:
  if any(p[1] > 0 for p in line) and any(p[1] < 0 for p in line):
    print(line)
(-65.7243888731199, -176.62192487031285), (-66.42506103952591, 175.12130159942038)