【问题标题】:H3 hexagons render with swapped lat, long in kepler.glH3 六边形在 kepler.gl 中使用交换的 lat、long 渲染
【发布时间】:2019-11-07 15:49:08
【问题描述】:

我想绘制 H3 六边形。奥地利。

下载并解压 https://biogeo.ucdavis.edu/data/gadm3.6/gpkg/gadm36_AUT_gpkg.zip

完整代码可在https://gist.github.com/geoHeil/b5b74887e20e4b659d4bb693a700a402 生成以生成六边形,如:

size = 7
hexagons = pd.DataFrame(h3.polyfill(geoJson, size), columns=['hexagons'])
hexagons.head()

8752e5b80ffffff
8752ee6c1ffffff

注意 h3 需要 epsg:4326 并稍后再次生成相同的投影 (https://github.com/uber/h3/issues/121)

这提供了一个类似于以下内容的文件:

现在,当移动到 https://kepler.gl/ 并上传数据时,我看到发生了三件奇怪的事情

  1. WKT 线串中的多边形失真。这表明使用了错误的投影。但是尝试转换为支持的https://github.com/keplergl/kepler.gl/blob/6b380ac6db94e10fed0a76f5e78ef7e55406df21/docs/user-guides/b-kepler-gl-workflow/a-add-data-to-the-map.md Webmercator 并不能解决问题

  1. 当手动添加六边形图层时,它会在也门渲染(基于 H3 地址。这看起来很奇怪。这可能是开普勒演示中的错误吗? 。这看起来很奇怪,因为几何图形是使用六边形生成的:h3_to_geo_boundary

  2. 六边形质心未填充。现在,当使用 h3_to_geo 转换为六边形质心并将数据添加回 ha HexBinlayer 时,并非所有六边形都已填充。但这很奇怪,因为最初所有的六边形都是可用的(见 1 和 2)。

请注意 (3) 中的 hexbin 六边形如何正确投影为六边形且不变形。

【问题讨论】:

  • 嗨,乔治!您是否设法将 H3 六边形投影到奥地利而不会变形?我无法让它们看起来像正六边形,除非我使用 EPSG:4326,它会扭曲国家的形状。否则,六边形总是看起来向两极拉伸。
  • 没有。请参阅:`生成的笛卡尔北/南对齐的十六进制网格,这就是它们在屏幕上看起来“正确”的原因`也许这有帮助(来自下面的答案

标签: gis projection kepler.gl h3


【解决方案1】:

我认为这里发生了一些事情:

  • 假设您使用的是h3-pymaster 分支,那么signature of polyfill 就是polyfill(geo_json, res, geo_json_conformant=False)。您需要将geo_json_conformant=True 添加到您的polyfill 调用中,否则多边形中的坐标将被解释为lat,lng 而不是lng,lat。这可能是您问题的根源。

  • 我不是 Kepler 专家,但我相信 HexBin 层使用的是生成的笛卡尔南北对齐的十六进制网格,这就是它们在屏幕上看起来“正确”的原因。 H3 六边形具有低失真,但它们确实有一些形状和面积失真,并且它们从不南北对齐。当您使用墨卡托投影(如在开普勒中)显示它们时,它们将具有更大的失真,尤其是在极点处,作为投影的函数。然而,这里的主要失真问题可能是由于切换 lat,lng - h3_to_multi_polygon 函数需要一个额外的布尔参数来输出符合 GeoJSON 的坐标。

  • 我相信 Kepler 也支持 H3 六边形层,因此一种选择是将原始点输入 Kepler 并让 Kepler 对 H3 索引进行聚合。

【讨论】:

  • 您好,您的最后一点确实是正确的。我试过这个。见我的第二点。这导致开普勒解释的 H3 地址发生 lat/long 的交换。我在上一个 pipi 版本,但我也可以尝试 master。但是我尝试了最新的开普勒大师——它仍然失败了。
  • 确实,使用此选项时,使用 H3 层时会生成正确的六边形。
  • 有趣的是,在这个新版本中,包含 WKT 的 geometry 字段破坏了开普勒本身。
【解决方案2】:

kepler 在所有六边形上使用实例渲染,它假定所有 h3 六边形彼此相对接近。它使用您当前的地图中心来计算六边形失真并将其应用于所有六边形(实例渲染)。不完美,但显着提高了性能。因为计算每个六边形的变形成本太高。

【讨论】:

    猜你喜欢
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-29
    • 2012-02-05
    相关资源
    最近更新 更多