在Folium中添加WMS图层失败问题求助
问题排查与解决方法
核心问题分析
你遇到的WMS图层加载失败,主要是参数大小写错误导致坐标系参数未被正确传递,同时需要验证图层名称的准确性:
坐标系参数大小写错误
Folium的WmsTileLayer类中,坐标系参数是小写的crs,而非你代码中写的大写CRS。Python关键字参数区分大小写,因此你设置的CRS='EPSG:900913'并未被图层识别,导致WMS请求使用了错误的坐标系,无法返回正确切片。图层名称验证
需要确认WMS服务提供的准确图层名称:访问你的WMS服务地址并添加?request=GetCapabilities&service=WMS参数,查看返回的Capabilities文档,找到对应图层的Name字段。例如,部分WMS服务的图层名可能不带jord:前缀,需要以官方返回的名称为准。
修正后的代码
import streamlit as st import folium import streamlit_folium map_geo = folium.Map(location=[57.8,14.14], zoom_start=13, width=1200) try: folium.raster_layers.WmsTileLayer( url='https://resource.sgu.se/service/wms/130/jordarter-25-100-tusen', layers=['SE.GOV.SGU.JORD.TACKNINGSKARTA.25K'], # 确认图层名称是否正确 transparent=False, control=True, fmt="image/png", name='SGU', attr='SGU Jordarter', overlay=True, show=True, crs='EPSG:900913', # 改为小写的crs version='1.3.0', ).add_to(map_geo) folium.LayerControl().add_to(map_geo) except Exception as e: st.write(e) streamlit_folium.st_folium(map_geo)
额外调试建议
- 打开浏览器开发者工具(F12),切换到网络标签,查看WMS的
GetMap请求:- 检查请求URL中的
CRS参数是否为EPSG:900913 - 查看请求的返回状态码,如果是400/404,说明参数有误;如果是200但返回空白图片,可能是图层名称错误或当前视图范围内无数据
- 检查请求URL中的
- 调整
transparent为True,避免不透明图层被底图遮挡(如果图层本身有透明区域)
内容的提问来源于stack exchange,提问作者Frew
相关产品推荐
相关产品推荐

