用途
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
工作流:
- 校验有效配置,必要时探测密钥:
python3 scripts/nasa_firms_fire_fetch.py check-config \
--probe-map-key \
--pretty
- 先对请求计划进行 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
- 带校验和运行日志执行抓取:
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。