如何在Folium中加载Shapefile(shp)?投影错误问题求助
问题解决方法
错误原因分析
这个CRSError本质是PROJ库版本不兼容或PROJ空间参考数据库损坏/版本不匹配导致的:旧版本PROJ的SQLite数据库中没有area_of_use_auth_name字段,但代码调用了这个字段,触发SQLite查询错误。另外,你的铁路数据是平面坐标系(从坐标数值可判断),直接传入Folium也会因投影不匹配引发问题。
分步解决步骤
1. 修正代码:先转换数据投影
Folium默认使用WGS84(EPSG:4326)坐标系,你的数据属于其他投影(如UTM),必须先转换投影再加载:
# 查看当前数据的投影信息 print(gdf.crs) # 将GeoDataFrame转换为EPSG:4326 gdf_wgs84 = gdf.to_crs(epsg=4326) # 初始化Folium地图(避免用map作为变量名,与Python内置函数冲突) m = folium.Map(location=[-14.235004, -51.92528], zoom_start=4) # 加载转换后的数据到地图 folium.GeoJson(data=gdf_wgs84).add_to(m) # 保存地图到本地文件 m.save('railway_map.html')
2. 修复PROJ库版本兼容问题
如果转换投影后仍报错,需重新安装兼容版本的GeoPandas和PROJ:
- 先卸载现有依赖:
conda remove pyproj geopandas - 从conda-forge通道重新安装(该通道的包版本兼容性更优):
conda install geopandas -c conda-forge
3. 清理PROJ缓存(可选)
若PROJ数据库缓存损坏,删除缓存目录后重新运行代码:
- Windows:
C:\Users\<你的用户名>\AppData\Local\PROJ - Linux/macOS:
~/.cache/proj
内容的提问来源于stack exchange,提问作者Digital_humanities
相关产品推荐
相关产品推荐

