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

使用geopandas+geoplot绘制核密度热力图加projection参数崩溃如何解决

问题根因

你遇到的GEOSCoordSeq_getSize_r断言错误是GEOS空间计算库读取到空坐标序列触发的底层崩溃,常见触发原因有三类:

  • 两个GeoDataFrame没有显式设置统一的CRS,传入投影参数后坐标转换异常生成空几何
  • 数据中存在未清理的空几何值
  • 底层依赖(pygeos、shapely、geopandas、cartopy)版本不兼容

解决步骤

1. 先预处理数据,统一CRS并清理空几何

你的数据坐标是经纬度格式,默认对应WGS84坐标系(EPSG:4326),先显式绑定CRS并过滤无效数据:

# 统一设置CRS,若你的数据本身采用其他坐标系请替换对应EPSG编码
df_points = df_points.set_crs(epsg=4326, allow_override=True)
df_map = df_map.set_crs(epsg=4326, allow_override=True)

# 过滤空几何
df_points = df_points[df_points.geometry.notna()].reset_index(drop=True)
df_map = df_map[df_map.geometry.notna()].reset_index(drop=True)

2. 调整投影参数,适配数据范围

为Albers等面积投影显式指定和你的数据匹配的中心坐标,避免默认全球投影和小范围数据适配异常:

import geoplot
import geoplot.crs as gcrs

# 按你的数据坐标设置投影中心
custom_proj = gcrs.AlbersEqualArea(central_longitude=-101.67, central_latitude=21.12)

# 绘图
ax = geoplot.kdeplot(
    df_points, 
    cmap='Reds', 
    shade=True,
    alpha=0.7,
    projection=custom_proj
)
geoplot.polyplot(df_map, ax=ax, edgecolor='#333', facecolor='none')

3. 若仍报错,修复依赖版本冲突

pygeos已在shapely 2.0+版本中合并入shapely主库,旧版本pygeos和新的GEOS库兼容问题是这类报错的高发原因,执行以下命令修复:

# 卸载冲突的pygeos
pip uninstall pygeos -y
# 升级核心依赖到最新稳定版
pip install -U shapely geopandas geoplot cartopy

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:39:02