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

Python绘制英国郡热力图失败:TypeError报错排查

英国郡热力图 TypeError 排查与绘图失败分析

一、报错核心原因

TypeError: cannot unpack non-iterable float object 本质是代码尝试对单个浮点数执行解包操作(例如 x, y = 51.5),结合你的场景,大概率出在以下两个环节:

  • 坐标字典格式错误:ChatGPT生成的郡坐标字典中,部分条目值不是(纬度, 经度)这样的可迭代元组/列表,而是单个浮点数,导致解包时失败。
  • GeoPandas几何操作错误:加载gb_100km.shp后,代码对geometry字段的坐标提取逻辑有误,误将单个浮点值当作可迭代结构解包。

二、分步排查与修复

1. 验证并修正坐标字典

打印字典内容,检查所有坐标是否为长度2的可迭代结构:

county_coords = {你的郡坐标字典}
for county, coords in county_coords.items():
    if not isinstance(coords, (tuple, list)) or len(coords) != 2:
        print(f"异常条目:{county} -> {coords}")
  • 对异常条目进行修正,确保所有坐标为(lat, lon)或(lon, lat)格式(注意GeoPandas通常采用(lon, lat)的顺序,需与数据集字段匹配)。

2. 检查数据集经纬度有效性

确认数据集的latitude和longitude字段无异常值:

import pandas as pd
df = pd.read_csv('你的数据集文件.csv') # 替换为你的数据加载方式
print(df[['latitude', 'longitude']].info())
print("缺失值数量:")
print(df[['latitude', 'longitude']].isnull().sum())
  • 若存在非数值类型或缺失值,需清洗数据(删除异常行或用均值/插值填充)。

3. 排查GeoPandas网格文件操作

加载网格文件后,检查几何字段类型并修正坐标提取逻辑:

import geopandas as gpd
grid = gpd.read_file('gb_100km.shp')
# 查看几何类型(应为Polygon/MultiPolygon等)
print(grid.geometry.type.unique())
  • 若代码中存在类似x, y = grid.geometry的错误写法,需改为GeoPandas标准的坐标提取方式,例如遍历单个几何对象:
    for geom in grid.geometry:
        # 提取多边形的边界坐标
        x, y = geom.exterior.coords.xy
    

三、绘图逻辑优化建议

  • 坐标系统一:GeoPandas默认采用WGS84(EPSG:4326),若gb_100km.shp使用其他坐标系,需转换匹配:
    grid = grid.to_crs(epsg=4326)
    
  • 热力图匹配逻辑:若绘制网格热力图,需将normalized_count数据通过郡名称关联到对应的网格区域,而非直接使用点坐标,避免地理范围不匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 00:29:55