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

如何从NASA POWER API批量获取CSV格式的点位气象数据?

批量获取并保存NASA POWER API的CSV数据

问题分析

你的代码存在几个关键问题:

  • 缺少pandas和io模块的导入
  • 读取CSV时变量引用错误(误写为content而非response.content)
  • 文件保存的代码块未完成
  • 可以直接写入API返回的原始CSV内容,无需先转成DataFrame再保存,效率更高

修正后的完整代码

import os
import requests
import pandas as pd
import io

# 假设df是你的目标数据集
lat = df['lat'].values.tolist()
long = df['long'].values.tolist()
stations = df['station'].values.tolist()  # 关联站点名,方便区分输出文件

output_dir = r"C:\Users\....."
# 确保输出目录存在,避免报错
os.makedirs(output_dir, exist_ok=True)

base_url = r"https://power.larc.nasa.gov/api/temporal/monthly/point?parameters=PS,WS10M_RANGE&community=SB&longitude={longitude}&latitude={latitude}&format=CSV&start=2018&end=2021"

for station_name, latitude, longitude in zip(stations, lat, long):
    api_request_url = base_url.format(longitude=longitude, latitude=latitude)
    
    try:
        response = requests.get(url=api_request_url, verify=True, timeout=30.00)
        response.raise_for_status()  # 检查请求是否成功
        
        # 方式1:直接写入原始CSV内容(高效,无需解析)
        filename = f"{station_name.replace(' ', '_')}_weather_data.csv"
        filepath = os.path.join(output_dir, filename)
        
        with open(filepath, 'w', encoding='utf-8') as file_object:
            file_object.write(response.text)
        
        # 方式2:若需预处理数据,转成DataFrame后保存
        # content_df = pd.read_csv(io.BytesIO(response.content), encoding='utf8', sep=",")
        # content_df['station'] = station_name  # 新增站点标识列
        # content_df.to_csv(filepath, index=False, encoding='utf-8')
        
        print(f"已保存 {station_name} 的数据到 {filepath}")
    except requests.exceptions.RequestException as e:
        print(f"获取 {station_name} 数据失败: {str(e)}")

关键说明

  • 依赖补充:添加pandas和io模块导入,保证代码可正常运行
  • 目录校验:用os.makedirs确保输出目录存在,避免因目录缺失报错
  • 文件名优化:用站点名命名文件,比API默认的power_*.csv更易识别
  • 异常处理:通过try-except捕获请求异常,避免单个点位失败导致整个程序中断
  • 两种保存方案:按需选择直接写入原始内容(高效)或转DataFrame预处理(灵活)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 08:47:16