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

如何在Folium热力图上叠加北卡罗来纳州城市或县边界?

在Folium热力图上叠加北卡罗来纳州区域边界的实现方法

核心思路

要叠加特定城市/县的边界,需要先获取对应区域的地理边界数据(GeoJSON或Shapefile格式),再通过Folium的GeoJson组件将边界图层添加到已有的热力图上。

具体步骤及代码示例

1. 安装依赖(若未安装)

如果需要处理地理数据,先安装geopandas用于读取和筛选边界文件:

pip install geopandas

2. 修改原有代码,添加边界图层

结合你提供的热力图代码,完整实现如下:

import folium
from folium.plugins import HeatMap
import geopandas as gpd

# --- 原有热力图代码保持不变 ---
max_amount = float(df_top20['Total_Minutes'].max())
hmap = folium.Map(location=[35.5, -82.5], zoom_start=7)

hm_wide = HeatMap(
    list(zip(df_top20.Latitude.values, df_top20.Longitude.values, df_top20.Total_Minutes.values)),
    min_opacity=0.2,
    max_val=max_amount,
    radius=25, 
    blur=20, 
    max_zoom=1, 
)
hmap.add_child(hm_wide)

# --- 新增:添加区域边界逻辑 ---
# 1. 读取北卡罗来纳州的县/城市边界文件(替换为你的本地文件路径)
# 可从美国人口普查局TIGER数据集或开源地理平台获取对应边界文件
nc_boundaries = gpd.read_file("path/to/north_carolina_counties.geojson")

# 2. 筛选出你数据框中包含的目标区域(假设df_top20有存储区域名称的列,比如'County')
target_regions = df_top20['County'].unique()
filtered_boundaries = nc_boundaries[nc_boundaries['NAME'].isin(target_regions)]

# 3. 将筛选后的边界添加到地图,自定义样式避免遮挡热力图
folium.GeoJson(
    filtered_boundaries,
    style_function=lambda x: {
        'color': '#ff0000',       # 边界线颜色
        'weight': 2,              # 边界线宽度
        'fillColor': '#ffa500',   # 区域填充色
        'fillOpacity': 0.1        # 填充透明度(低透明度保证热力图可见)
    },
    # 鼠标悬停时显示区域名称
    tooltip=folium.GeoJsonTooltip(fields=['NAME'], labels=True)
).add_to(hmap)

# 保存或展示地图
hmap.save("heatmap_with_borders.html")

关键细节说明

  • 边界数据获取:确保你的边界文件包含与数据框匹配的名称字段(比如县名字段NAME),才能准确筛选出目标区域。
  • 样式调整:通过fillOpacity控制填充透明度,避免边界图层遮挡下方的热力图;可根据需求修改颜色、线宽等参数。
  • 城市边界适配:如果需要叠加城市边界,只需替换为北卡罗来纳州的城市边界文件,并调整筛选时匹配的字段(比如城市名字段)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:25:40