从IMD下载降雨数据格式反复不符,请求修正代码获取目标格式
IMD降雨数据下载格式不符问题修正方案
问题核心
你遇到的格式反转问题,本质是下载请求的格式参数与期望格式不匹配,大概率是代码里的参数设置搞反了,或是文件保存后缀与实际请求格式不一致。
具体修正步骤
核对IMD服务的格式参数定义
IMD的降雨数据接口通常通过format参数指定输出格式,官方标准映射一般是:- 要NetCDF(.nc)格式:设置
format='netcdf'(部分接口用fmt='nc',需以IMD官方文档为准) - 要.grd格式:设置
format='grd'(或fmt='grd')
检查代码中是否把这两个参数值写反了——比如想要nc时用了grd参数,反之亦然。
- 要NetCDF(.nc)格式:设置
修正文件保存的后缀名
确保保存文件时的后缀与请求的格式严格对应:- 请求NetCDF格式时,保存为
*.nc - 请求.grd格式时,保存为
*.grd
避免出现请求nc却用.grd后缀保存,或反过来的错误。
- 请求NetCDF格式时,保存为
验证HTTP请求头(若涉及)
部分IMD服务会通过Accept请求头判断输出格式:- 要NetCDF:设置
headers={'Accept': 'application/netcdf'} - 要.grd格式:设置
headers={'Accept': 'application/x-grd'}(具体MIME类型需参考IMD官方规范)
检查代码中是否错误设置了该字段。
- 要NetCDF:设置
示例修正代码(基于图片推测)
假设原代码存在参数反转问题,修正后如下:
# 正确获取NetCDF(.nc)格式数据 import requests url = "https://imd.gov.in/api/rainfall" # 设置正确的格式参数 params = {'year': 2023, 'format': 'netcdf'} response = requests.get(url, params=params) # 用对应后缀保存文件 with open('rainfall_data.nc', 'wb') as f: f.write(response.content) # 正确获取.grd格式数据 params = {'year': 2023, 'format': 'grd'} response = requests.get(url, params=params) with open('rainfall_data.grd', 'wb') as f: f.write(response.content)
内容的提问来源于stack exchange,提问作者Usman Hyder Pattoo
相关产品推荐
相关产品推荐

