如何用Python调用OECD的SDMX API获取指定土地覆盖数据?
解决OECD SDMX数据查询问题
方法一:直接请求CSV格式(最可靠)
OECD的SDMX接口支持直接返回CSV格式,只需把原URL里的GetData替换为GetData.csv,就能绕过SDMX库的解析问题:
import pandas as pd # 修改后的CSV请求URL url = "https://stats.oecd.org/restsdmx/sdmx.ashx/GetData.csv/LAND_COVER_FUA/AUS+AUT.FOREST+GRSL+WETL+SHRUBL+SPARSE_VEGETATION+CROPL+URBAN+BARE+WATER.THOUSAND_SQKM+PCNT/all?startTime=1992&endTime=2019" # 读取CSV到DataFrame df = pd.read_csv(url) print(df.head())
方法二:修复pandasdmx的使用方式
如果一定要用pandasdmx库,需按照OECD的SDMX规范构建查询参数,而非直接拼接URL:
import pandasdmx as sdmx # 初始化OECD数据源 oecd = sdmx.Request('OECD') # 按维度拆分查询参数 data_response = oecd.data( resource_id='LAND_COVER_FUA', key={ 'REF_AREA': 'AUS,AUT', 'LAND_COVER': 'FOREST,GRSL,WETL,SHRUBL,SPARSE_VEGETATION,CROPL,URBAN,BARE,WATER', 'MEASURE': 'THOUSAND_SQKM,PCNT' }, params={'startTime': '1992', 'endTime': '2019'} ) # 转换为DataFrame格式 df = sdmx.to_pandas(data_response) print(df.head())
常见排查点
- 确认网络可正常访问OECD官网,必要时配置代理
- 验证参数中的维度代码(如
SPARSE_VEGETATION)是否匹配数据集的官方代码列表,可通过OECD数据详情页核对 - 升级pandasdmx到最新版本:执行
pip install --upgrade pandasdmx
内容的提问来源于stack exchange,提问作者user2679611
相关产品推荐
相关产品推荐

