SuperAPI AI 工具集

nasa-firms-fire-fetch

数据与分析

查看项目

更新于 10-16 04:09

技能介绍

用途

NASA FIRMS Fire Fetch 用于获取 NASA FIRMS 的活跃火点探测数据。其核心目标是在一次调用中,针对一个边界框(bounding box)抓取火点数据,并返回机器可读的 JSON 结果。

主要能力

  • 通过 FIRMS 的 area/csv 端点抓取指定日期窗口、来源和边界框的活跃火点探测数据。
  • 支持包含首尾的 --start-date 与 --end-date,即使 FIRMS 单次请求最多只接受 5 天。
  • 返回机器可读 JSON,包含请求元数据、分块传输详情、校验摘要和规范化后的火点记录。
  • 通过结构化 stderr 日志和可选文件日志保持运行时可观测性。
  • 内置健壮性机制:对瞬时 HTTP 和网络失败进行指数退避重试;在存在 Retry-After 时予以遵守,超过配置上限则快速失败;以最小请求间隔进行限流;在远程调用前执行安全上限(每次运行最大包含天数范围、每分块最大天数范围、每次运行最大估算事务权重)。
  • 传输校验:HTTP 状态处理、content-type 检查、UTF-8 严格解码、CSV 与 JSON 解析检查。
  • 结构校验:必需的火点列、坐标范围与边界框包含关系、采集日期/时间可解析性、返回日期是否仍在请求窗口内、分块表头一致性。

使用方式

必需环境:远程请求需要 NASA_FIRMS_MAP_KEY。可从 assets/config.example.env 开始,将真实密钥保存在 assets/config.env。运行命令前加载环境变量:

set -a
source assets/config.env
set +a

工作流:

  1. 校验有效配置,必要时探测密钥:
python3 scripts/nasa_firms_fire_fetch.py check-config \
  --probe-map-key \
  --pretty
  1. 先对请求计划进行 dry-run:
python3 scripts/nasa_firms_fire_fetch.py fetch \
  --source VIIRS_NOAA20_NRT \
  --bbox 115.8,-8.9,116.3,-8.3 \
  --start-date 2026-03-01 \
  --end-date 2026-03-08 \
  --dry-run \
  --pretty
  1. 带校验和运行日志执行抓取:
python3 scripts/nasa_firms_fire_fetch.py fetch \
  --source VIIRS_NOAA20_NRT \
  --bbox 115.8,-8.9,116.3,-8.3 \
  --start-date 2026-03-01 \
  --end-date 2026-03-08 \
  --check-availability \
  --output ./data/firms/nasa-firms-fire-fetch.json \
  --log-level INFO \
  --log-file ./logs/nasa-firms-fire-fetch.log \
  --pretty

OpenClaw 调用兼容性:将触发元数据保留在 name、description 和 agents/openai.yaml 中;使用 $nasa-firms-fire-fetch 调用;保持调用原子化,并通过 --source、--bbox、--start-date、--end-date 参数化;对于重复区域或重复来源,使用 OpenClaw 编排而非本脚本。

OpenClaw 提示模板(可直接在 OpenClaw 中使用,仅替换方括号占位符):

侦察(dry-run):

Use $nasa-firms-fire-fetch.
Run:
python3 scripts/nasa_firms_fire_fetch.py fetch \
  --source [FIRMS_SOURCE] \
  --bbox [WEST,SOUTH,EAST,NORTH] \
  --start-date [YYYY-MM-DD] \
  --end-date [YYYY-MM-DD] \
  --dry-run \
  --pretty
Return only the JSON result.

抓取(火点验证窗口):

Use $nasa-firms-fire-fetch.
Run:
python3 scripts/nasa_firms_fire_fetch.py fetch \
  --source [FIRMS_SOURCE] \
  --bbox [WEST,SOUTH,EAST,NORTH] \
  --start-date [YYYY-MM-DD] \
  --end-date [YYYY-MM-DD] \
  --check-availability \
  --pretty
Return only the JSON result.

校验(质量门):

Use $nasa-firms-fire-fetch.
Run:
python3 scripts/nasa_firms_fire_fetch.py fetch \
  --source [FIRMS_SOURCE] \
  --bbox [WEST,SOUTH,EAST,NORTH] \
  --start-date [YYYY-MM-DD] \
  --end-date [YYYY-MM-DD] \
  --pretty
Check validation_summary.total_issue_count and validation_summary.ok.
Return JSON plus one-line pass/fail verdict.

适用场景

适用于需要针对单个边界框、指定日期窗口和来源,获取 NASA FIRMS 活跃火点探测数据并进行校验的场景。可通过 OpenClaw 编排用于重复任务或多区域扇出。

限制

  • 仅保留针对 FIRMS area/csv 端点的一个原子抓取实现。
  • 不嵌入地理编码、全球尺度扫描、国家查询、告警阈值或火点分类逻辑。
  • 对于重复任务或多区域扇出,应使用 OpenClaw 编排,而非本脚本。
  • 远程请求需要 NASA_FIRMS_MAP_KEY。

参考与脚本

参考文件:references/env.md、references/nasa-firms-api-notes.md、references/nasa-firms-limitations.md、references/openclaw-chaining-templates.md。

脚本:scripts/nasa_firms_fire_fetch.py。