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

如何用Python的Folium、Geopandas、Pandas从CSV绘制带悬浮信息的GeoJSON多边形交互地图

解决方案:基于CSV中GeoJSON生成交互式多边形地图

以下是使用pandas、geopandas和folium实现需求的完整流程:

1. 安装依赖库

先确保安装所需Python包:

pip install pandas geopandas folium

2. 完整代码实现

import pandas as pd
import geopandas as gpd
import folium
import json
from folium.features import GeoJsonTooltip

# 加载CSV数据,替换为你的文件路径
df = pd.read_csv('airport_airspace.csv')

# 解析GeoJSON字段并转换为GeoDataFrame
df['geometry'] = df['geojson'].apply(lambda x: json.loads(x)['features'][0]['geometry'])
gdf = gpd.GeoDataFrame(df, geometry='geometry', crs='EPSG:4326')

# 创建基础地图,以第一个多边形中心为初始定位
center_lat = gdf.geometry.iloc[0].centroid.y
center_lon = gdf.geometry.iloc[0].centroid.x
m = folium.Map(location=[center_lat, center_lon], zoom_start=12)

# 配置悬浮弹窗显示内容
tooltip = GeoJsonTooltip(
    fields=['airport', 'height', 'unique_code', 'start_date'],
    aliases=['机场代码:', '高度:', '唯一编码:', '生效日期:'],
    localize=True,
    labels=True,
    style="""
        background-color: #f0f0f0;
        border: 1px solid #ccc;
        border-radius: 4px;
        padding: 8px;
    """
)

# 添加多边形到地图并绑定弹窗
folium.GeoJson(
    gdf,
    tooltip=tooltip,
    style_function=lambda x: {
        'fillColor': '#4287f5',
        'color': '#333',
        'weight': 2,
        'fillOpacity': 0.4
    }
).add_to(m)

# 保存为HTML交互地图
m.save('airport_airspace_map.html')
print("交互地图已生成:airport_airspace_map.html")

关键细节说明

  • GeoJSON解析:CSV中的geojson列是字符串格式,通过json.loads解析后提取首个Feature的几何信息,转为GeoDataFrame的geometry列。
  • 悬浮弹窗:通过GeoJsonTooltip指定要展示的字段和别名,自定义样式优化显示效果。
  • 地图样式:style_function控制多边形的填充色、边框样式和透明度,保证可视化清晰度。

注意事项

  • 替换代码中的CSV文件路径为实际路径;
  • 若GeoJSON包含多个Feature,需调整解析逻辑(如遍历所有features);
  • 可修改zoom_start参数调整地图初始缩放级别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:14:53