使用 geopandas + geoplot 绘制热图(内核密度)会导致会话崩溃

Plotting a heatmap (kernel density) using geopandas + geoplot crashes session

我最近发布了 关于如何使用 geopandas 绘制热图的帖子。建议我使用 geoplot.kdeplot(),但传递 projection 会使我的会话崩溃。

假设我在df_pointsdf_map中分别存储了以下数据:

> print(df_points)
        PointID                     geometry
0     204403876  POINT (-101.66700 21.11670)
1     204462769  POINT (-101.66700 21.11670)
2     144407530  POINT (-101.66700 21.11670)

> print(df_map)
     PolyID                                           geometry
0     01001  POLYGON ((-102.10641 22.06035, -102.10368 22.0...
1     01002  POLYGON ((-102.05189 22.29144, -102.05121 22.2...
2     01003  POLYGON ((-102.68569 22.09963, -102.69087 22.0...

这是我尝试过的方法,但根据 this tutorial,我应该将 projection 传递给热图。

# Import geoplot
import geoplot
import geoplot.crs as gcrs

# Plot points
ax = geoplot.kdeplot(df_points, shade=True, alpha=0.7)
# Plot polygons
geoplot.polyplot(df_map, ax=ax)

但是,如果我添加 projection=gcrs.AlbersEqualArea(),我的会话会崩溃:

# Plot heatmap
ax = geoplot.kdeplot(df_points, cmap='Reds', shade=True,
                     projection=gcrs.AlbersEqualArea()) # This crashes my session ):
# Add polygons
geoplot.polyplot(df_map, ax=ax)

python3: geos_ts_c.cpp:3991: int GEOSCoordSeq_getSize_r(GEOSContextHandle_t, const geos::geom::CoordinateSequence*, unsigned int*): Assertion `0 != cs' failed.

如何通过 projection=gcrs.AlbersEqualArea() 并避免错误?

我在评论之前的一个问题:我刚刚 运行 官方 geoplot 参考中的示例与 Colab 并经历了类似的崩溃。经过一番研究,我发现崩溃是由 shaply 引起的,卸载并重新安装它,图表按照参考显示。请试一试。

pip uninstall shapely
pip install shapely --no-binary shapely

以下是对我有帮助的