在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
相关产品推荐
相关产品推荐

