Geoskill: NASA Power Download

Download daily, monthly, or climatology NASA POWER meteorological and solar data (300+ parameters) for points or regions worldwide without an API key.

ruiduobao

@ruiduobao

Install

$ openclaw skills install @ruiduobao/geoskill-nasa-power-download

NASA POWER Data Download

Download meteorological and solar energy data from NASA POWER API — free, no API key required.

Overview

NASA POWER provides solar and meteorological data from NASA's satellite and reanalysis missions. It covers the period from 1984 to present at 0.5° × 0.5° spatial resolution globally.

Features

  • 300+ parameters: solar radiation, temperature, precipitation, wind, humidity, pressure
  • 3 temporal resolutions: daily, monthly, climatology
  • Point and regional queries: single lat/lon or bounding box
  • Output formats: CSV, JSON
  • No API key required: completely free and open
  • Progress bars: visual download progress with tqdm

Key Parameters

ParameterDescriptionUnit
ALLSKY_SFC_SW_DWNAll Sky Surface Shortwave Downward IrradianceMJ/m²/day
T2MTemperature at 2 Meters°C
T2M_MAXMaximum 2m Temperature°C
T2M_MINMinimum 2m Temperature°C
PRECTOTCORRPrecipitation Correctedmm/day
WS2MWind Speed at 2 Metersm/s
RH2MRelative Humidity at 2 Meters%
PSSurface PressurekPa

Usage

# Download daily solar radiation for a point
python scripts\nasa_power_download.py download \
  --param ALLSKY_SFC_SW_DWN \
  --lat 39.9042 --lon 116.4074 \
  --start 2023-01-01 --end 2023-12-31 \
  --output beijing_solar.csv

# Download monthly temperature for a region
python scripts\nasa_power_download.py download \
  --param T2M --resolution monthly \
  --bbox 73 18 135 54 \
  --start 2020-01 --end 2020-12 \
  --output china_temp.csv

# Get climatology (long-term average)
python scripts\nasa_power_download.py download \
  --param PRECTOTCORR --resolution climatology \
  --lat 31.2304 --lon 121.4737 \
  --output shanghai_rain_climatology.json --format json

# List all available parameters
python scripts\nasa_power_download.py list-params

# Show parameter info
python scripts\nasa_power_download.py info --param ALLSKY_SFC_SW_DWN

Parameters

  • --param: Comma-separated parameter names (default: ALLSKY_SFC_SW_DWN)
  • --lat/--lon: Point coordinates (WGS84)
  • --bbox: Bounding box as west south east north
  • --resolution: daily, monthly, or climatology
  • --start/--end: Date range (YYYY-MM-DD for daily, YYYY-MM for monthly)
  • --output: Output file path
  • --format: csv or json

Installation

# Install dependencies
pip install requests>=2.28.0 tqdm

# Or install from requirements.txt
pip install -r scripts/requirements.txt

Data Source

  • API: https://power.larc.nasa.gov/api/
  • Documentation: https://power.larc.nasa.gov/docs/
  • License: Public Domain (NASA open data)
  • Rate Limit: No strict limit; recommended max 10 requests/minute for stable access
  • Citation: Stackhouse Jr., P.W., et al., 2021. NASA POWER: Worldwide Meteorological Data for Renewable Energy Applications.

Citation Format

@article{stackhouse2021nasa,
  title={NASA POWER: Worldwide Meteorological Data for Renewable Energy Applications},
  author={Stackhouse Jr., P.W. and others},
  journal={NASA Langley Research Center},
  year={2021},
  url={https://power.larc.nasa.gov/}
}

Data Notes

  • Climatology: 30-year normal (1984–2013 baseline). Represents long-term average conditions.
  • Missing data: Represented as -999 in output. Always check for and handle these values.
  • Update frequency: Data becomes available approximately 2 weeks after real-time (data latency ~10–14 days).
  • JSON output structure:
    {
      "type": "Feature",
      "geometry": {"type": "Point", "coordinates": [116.4074, 39.9042]},
      "properties": {
        "parameter": "ALLSKY_SFC_SW_DWN",
        "dates": ["2023-01-01", "2023-01-02"],
        "values": [8.5, 7.3]
      }
    }
    

Large-Area Download Guidance

  • Recommended bbox: Maximum ~10° × 10° per request for reliable performance.
  • Larger areas: Split into multiple smaller bbox requests and merge results.
  • Multi-point batch: Loop in shell script for multiple locations:
    for lat in 30 35 40; do
      for lon in 110 115 120; do
        python scripts\nasa_power_download.py download \
          --param T2M --lat $lat --lon $lon \
          --start 2023-01-01 --end 2023-12-31 \
          --output "temp_${lat}_${lon}.csv"
      done
    done
    

Data Validation

  1. Check for -999 values (missing data) — filter or interpolate before analysis.
  2. Range checks:
    • Temperature (T2M): -90°C to 60°C
    • Precipitation (PRECTOTCORR): 0 to 200 mm/day
    • Solar radiation: 0 to 40 MJ/m²/day
    • Wind speed: 0 to 50 m/s
  3. Temporal consistency: verify no gaps in date sequence.

Visualization

  • Time series: Load CSV in Python (pandas + matplotlib) to plot daily/monthly trends.
  • Spatial maps: For bbox results, use matplotlib.imshow() or QGIS to rasterize point data.
  • Climatology comparison: Overlay monthly climatology with current year to visualize anomalies.

Troubleshooting

ErrorCauseSolution
ConnectionErrorNetwork issue or API downCheck internet connection, retry in 1 minute
HTTP 429Rate limit exceededWait 60 seconds before retrying
HTTP 404Invalid parameters or date rangeCheck parameter names and date format
ValueError: bboxInvalid bounding boxEnsure format is west,south,east,north
Empty outputNo data for query region/timeTry different date range or check coordinates
ModuleNotFoundErrorMissing dependencyRun pip install requests tqdm

Advanced Usage

Batch Download with Shell Loop

# Download T2M for 12 months at a single point
for month in $(seq -w 1 12); do
  python scripts\nasa_power_download.py download     --lat 39.9042 --lon 116.4074     --start 2023-01-01 --end 2023-12-31     --param T2M --output beijing_t2m_${month}.csv
done

CI/CD Integration (GitHub Actions)

# .github/workflows/update-nasa-power.yml
name: Update Weather Data
on:
  schedule:
    - cron: '0 6 * * *'  # Daily at 06:00 UTC
jobs:
  download:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: '3.11'
      - run: pip install requests
      - run: |
          python scripts\nasa_power_download.py download \
            --lat 39.9042 --lon 116.4074 \
            --start $(date -d '7 days ago' +%Y-%m-%d) \
            --end $(date +%Y-%m-%d) \
            --param T2M --output data/beijing_latest.csv
      - run: git add data/ && git commit -m "update: NASA POWER $(date +%Y-%m-%d)" || echo "No changes"

PostgreSQL/PostGIS Import

python scripts\nasa_power_download.py download --lat 39.9 --lon 116.4   --start 2023-01-01 --end 2023-12-31 --param T2M --output weather.csv

psql -d gis_db -c "\COPY weather(lat, lon, date, t2m) FROM 'weather.csv' CSV HEADER"

Performance Tips

  • Use --param to download only needed variables (reduces request size)
  • For multi-point batches, add sleep 1 between requests to avoid HTTP 429
  • Temporal resolution climatology is fastest (pre-computed averages)

中文说明

下载 NASA POWER(全球能源资源预测)数据 —— 包括太阳辐射、气温、降水、风速、湿度和 300+ 气象参数。完全免费,无需 API 密钥。

核心功能

  • 300+ 参数:太阳辐射、气温、降水、风速、湿度、气压等
  • 3 种时间分辨率:日值、月值、气候态
  • 点查询和区域查询:单点经纬度或边界框
  • 输出格式:CSV、JSON
  • 无需 API 密钥:完全免费开放
  • 进度条:使用 tqdm 显示下载进度

主要参数

参数名描述单位
ALLSKY_SFC_SW_DWN全天空地表短波向下辐照度MJ/m²/day
T2M2米气温°C
T2M_MAX2米最高气温°C
T2M_MIN2米最低气温°C
PRECTOTCORR校正降水量mm/day
WS2M2米风速m/s
RH2M2米相对湿度%
PS地表气压kPa

使用示例

# 下载北京逐日太阳辐射
python scripts\nasa_power_download.py download \
  --param ALLSKY_SFC_SW_DWN \
  --lat 39.9042 --lon 116.4074 \
  --start 2023-01-01 --end 2023-12-31 \
  --output beijing_solar.csv

# 下载中国区域月平均气温
python scripts\nasa_power_download.py download \
  --param T2M --resolution monthly \
  --bbox 73 18 135 54 \
  --start 2020-01 --end 2020-12 \
  --output china_temp.csv

# 获取上海降水气候态(长期平均)
python scripts\nasa_power_download.py download \
  --param PRECTOTCORR --resolution climatology \
  --lat 31.2304 --lon 121.4737 \
  --output shanghai_rain_climatology.json --format json

# 列出所有可用参数
python scripts\nasa_power_download.py list-params

# 查看参数详情
python scripts\nasa_power_download.py info --param ALLSKY_SFC_SW_DWN

数据来源

Top skills in this category