GeoDataFrame可正常plot但在Folium的GeoJson中不显示问题求助
问题核心原因
90%以上的概率是坐标顺序颠倒导致的:
- GeoPandas生成多边形时,你传入的点顺序是
[纬度, 经度],生成的凸包坐标对也是(纬度值, 经度值)格式 - 但Folium遵循的GeoJSON标准强制要求坐标顺序为
[经度, 纬度],顺序颠倒后多边形会被绘制到完全错误的地理位置(比如本应在芬兰的多边形会跑到印度洋中部),自然在你设置的芬兰区域地图上看不到内容。
剩下的小概率原因为样式配置缺失导致多边形透明不可见。
修复方案
1. 优先修正多边形生成时的坐标顺序(最彻底)
将生成多边形环节的列顺序调换,保证传入的点经度在前、纬度在后:
# 原代码:latlong = df[['Latitude','Longitude']].loc[df['cluster'] == i] # 修改为: latlong = df[['Longitude','Latitude']].loc[df['cluster'] == i]
后续流程无需改动,生成的多边形坐标就符合Folium的要求。
2. 补充样式配置避免透明不可见
修改Folium的样式函数,明确设置边框、填充透明度等参数,避免默认样式导致看不到多边形:
geo_j = folium.GeoJson(data=geo_j, style_function=lambda x: { 'fillColor': 'orange', 'color': 'black', # 边框颜色 'weight': 2, # 边框粗细 'fillOpacity': 0.6 # 填充透明度 })
验证方法
如果不确定是不是坐标顺序问题,可以打印任意一个GeoJSON的内容,查看坐标数值:
- 符合要求的坐标应该是
[27.x, 61.x]格式(经度在前,数值在27左右) - 如果坐标是
[61.x, 27.x]则可确定是顺序颠倒问题
内容的提问来源于stack exchange,提问作者user3868244
相关产品推荐
相关产品推荐

