You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Python中转换H3 Hex ID为多边形遇方法不存在问题求助

解决H3 v3.7.6中Hex ID转多边形的问题

H3-py v3.x版本对API做了调整,你参考的旧方法已被重命名或移除,以下是适配v3.7.6的正确操作:

单个H3 Hex ID转多边形

使用h3.h3_to_boundary()获取边界坐标,再转换为GeoDataFrame支持的多边形对象:

import h3
from shapely.geometry import Polygon
import geopandas as gpd

# 目标H3 Hex ID
h3_id = '86264c28fffffff'

# 获取边界坐标(geo_json=True切换为(lng, lat)顺序,符合GeoJSON标准)
boundary = h3.h3_to_boundary(h3_id, geo_json=True)
# 转换为shapely多边形
polygon = Polygon(boundary)
# 构建GeoDataFrame并指定坐标系
gdf = gpd.GeoDataFrame({'h3_id': [h3_id]}, geometry=[polygon], crs='EPSG:4326')
# 导出为shapefile
gdf.to_file('h3_hexagon.shp')

批量转换多个H3 Hex ID

处理批量ID可通过循环批量生成多边形:

h3_ids = ['86264c28fffffff', '86264c2afffffff']

polygons = []
for h_id in h3_ids:
    boundary = h3.h3_to_boundary(h_id, geo_json=True)
    polygons.append(Polygon(boundary))

gdf = gpd.GeoDataFrame({'h3_id': h3_ids}, geometry=polygons, crs='EPSG:4326')
gdf.to_file('h3_hexagons.shp')

核心API说明

  • h3.h3_to_boundary(h3_id, geo_json=False):替代旧版h3_to_geo_boundary,返回六边形顶点坐标。geo_json=True时坐标顺序适配GeoDataFrame需求。
  • 若需处理带孔的H3单元格生成多多边形,可使用h3.h3_to_multi_polygon(),参数需传入H3 ID列表:
multi_polygon_coords = h3.h3_to_multi_polygon([h3_id], geo_json=True)

内容的提问来源于stack exchange,提问作者Geoff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 07:23:18