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

如何使用OWSLib获取WMS提取图片的正确GetMap尺寸?

OWSLib WMS GetMap请求size参数设置指南

核心逻辑

size的[Width, Height]是输出PNG的像素宽高,关键要保证像素比例和bbox的地理比例一致,不然地图会拉伸变形。

计算步骤

  • 先算bbox的地理范围尺寸:
    • 地理宽度 = 80.9 - 72.653 = 8.247(EPSG:4326下单位是度)
    • 地理高度 = 22.029 - 15.607 = 6.422
  • 算出宽高比例:8.247 / 6.422 ≈ 1.284
  • 设定其中一个像素值,推导另一个:
    • 比如设Width=800,那Height≈800 / 1.284 ≈ 623(取整数)
    • 或者设Height=600,Width≈600 * 1.284 ≈ 770

修正后的代码示例

from owslib.wms import WebMapService

# 初始化WMS服务,替换成你实际的WMS地址
wms = WebMapService("你的WMS服务URL", version="1.1.1")

image = wms.getmap(
    layers=['geomorphology:MH_GM50K_0506'],
    srs='EPSG:4326',
    bbox=(72.653, 15.607, 80.9, 22.029),
    format='image/png',
    size=[800, 623],  # 按比例计算后的像素宽高
    transparent=True
)
out = open('geomorph_MH.png', 'wb')
out.write(image.read())
out.close()  # 注意加括号,否则不会执行关闭操作

额外提示

  • 要是懒得计算,也可以先设固定值比如[1000,1000]快速预览,但地图会变形,不适合正式使用。
  • 部分WMS会限制最大像素尺寸,如果请求报错,缩小宽高数值就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:22:44