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

Python中将geovoronoi生成的Voronoi多边形添加到Folium地图的问题

实现步骤

  1. 先将geovoronoi返回的多边形对象转换为GeoDataFrame
  2. 统一坐标系为Folium兼容的WGS84(EPSG:4326)
  3. 直接通过folium.GeoJson添加到已有地图中

完整代码示例

在你生成polyShapes, puntos的代码后追加以下内容即可:

# 构造Voronoi多边形GeoDataFrame,继承输入点位的坐标系
gdf_voronoi = gpd.GeoDataFrame(
    geometry=list(polyShapes.values()),
    crs=coords.crs
)

# 可选:关联原始点位的属性字段,可用于弹窗展示或自定义样式
region_point_map = {reg_id: idx for idx, reg_id in enumerate(puntos)}
point_idx_list = [region_point_map[reg_id] for reg_id in polyShapes.keys()]
gdf_voronoi = gdf_voronoi.join(
    coords.reset_index(drop=True),
    on=point_idx_list,
    rsuffix="_origin"
)

# 转换为Folium兼容的WGS84坐标系,若原始数据已为EPSG:4326可跳过
gdf_voronoi = gdf_voronoi.to_crs(epsg=4326)

# 过滤无效多边形避免渲染报错
gdf_voronoi = gdf_voronoi[gdf_voronoi.is_valid & ~gdf_voronoi.is_empty]

# 添加到已有Folium地图mapaMilagro
folium.GeoJson(
    data=gdf_voronoi,
    style_function=lambda x: {
        "fillColor": "#3388ff",  # 自定义填充色
        "color": "#000000",      # 边界颜色
        "weight": 1,             # 边界宽度
        "fillOpacity": 0.3       # 填充透明度
    },
    # 可选:添加弹窗展示点位信息,fields内替换为你实际需要展示的字段名
    popup=folium.GeoJsonPopup(fields=["id", "name"])
).add_to(mapaMilagro)

说明

如果你不需要关联原始点位的属性,跳过属性关联的可选步骤即可,核心逻辑和你之前添加城市范围多边形的逻辑完全一致,仅需将源数据替换为构造的Voronoi GeoDataFrame即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:57:03