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

在Folium中添加WMS图层失败问题求助

问题排查与解决方法

核心问题分析

你遇到的WMS图层加载失败,主要是参数大小写错误导致坐标系参数未被正确传递,同时需要验证图层名称的准确性:

  1. 坐标系参数大小写错误
    Folium的WmsTileLayer类中,坐标系参数是小写的crs,而非你代码中写的大写CRS。Python关键字参数区分大小写,因此你设置的CRS='EPSG:900913'并未被图层识别,导致WMS请求使用了错误的坐标系,无法返回正确切片。

  2. 图层名称验证
    需要确认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但返回空白图片,可能是图层名称错误或当前视图范围内无数据
  • 调整transparent为True,避免不透明图层被底图遮挡(如果图层本身有透明区域)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 00:46:09