/install flood-risk-analysis-usgs-data-download
USGS Data Download Guide
Overview
This guide covers downloading water level data from USGS using the dataretrieval Python package. USGS maintains thousands of stream gages across the United States that record water levels at 15-minute intervals.
Installation
pip install dataretrieval
nwis Module (Recommended)
The NWIS module is reliable and straightforward for accessing gage height data.
from dataretrieval import nwis
# Get instantaneous values (15-min intervals)
df, meta = nwis.get_iv(
sites='\x3Cstation_id>',
start='\x3Cstart_date>',
end='\x3Cend_date>',
parameterCd='00065'
)
# Get daily values
df, meta = nwis.get_dv(
sites='\x3Cstation_id>',
start='\x3Cstart_date>',
end='\x3Cend_date>',
parameterCd='00060'
)
# Get site information
info, meta = nwis.get_info(sites='\x3Cstation_id>')
Parameter Codes
| Code | Parameter | Unit | Description |
|---|---|---|---|
00065 |
Gage height | feet | Water level above datum |
00060 |
Discharge | cfs | Streamflow volume |
nwis Module Functions
| Function | Description | Data Frequency |
|---|---|---|
nwis.get_iv() |
Instantaneous values | ~15 minutes |
nwis.get_dv() |
Daily values | Daily |
nwis.get_info() |
Site information | N/A |
nwis.get_stats() |
Statistical summaries | N/A |
nwis.get_peaks() |
Annual peak discharge | Annual |
Returned DataFrame Structure
The DataFrame has a datetime index and these columns:
| Column | Description |
|---|---|
site_no |
Station ID |
00065 |
Water level value |
00065_cd |
Quality code (can ignore) |
Downloading Multiple Stations
from dataretrieval import nwis
station_ids = ['\x3Cid_1>', '\x3Cid_2>', '\x3Cid_3>']
all_data = {}
for site_id in station_ids:
try:
df, meta = nwis.get_iv(
sites=site_id,
start='\x3Cstart_date>',
end='\x3Cend_date>',
parameterCd='00065'
)
if len(df) > 0:
all_data[site_id] = df
except Exception as e:
print(f"Failed to download {site_id}: {e}")
print(f"Successfully downloaded: {len(all_data)} stations")
Extracting the Value Column
# Find the gage height column (excludes quality code column)
gage_col = [c for c in df.columns if '00065' in str(c) and '_cd' not in str(c)]
if gage_col:
water_levels = df[gage_col[0]]
print(water_levels.head())
Common Issues
| Issue | Cause | Solution |
|---|---|---|
| Empty DataFrame | Station has no data for date range | Try different dates or use get_iv() |
get_dv() returns empty |
No daily gage height data | Use get_iv() and aggregate |
| Connection error | Network issue | Wrap in try/except, retry |
| Rate limited | Too many requests | Add delays between requests |
Best Practices
- Always wrap API calls in try/except for failed downloads
- Check
len(df) > 0before processing - Station IDs are 8-digit strings with leading zeros (e.g., '04119000')
- Use
get_iv()for gage height, as daily data is often unavailable - Filter columns to exclude quality code columns (
_cd) - Break up large requests into smaller time periods to avoid timeouts
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install flood-risk-analysis-usgs-data-download - 安装完成后,直接呼叫该 Skill 的名称或使用
/flood-risk-analysis-usgs-data-download触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
usgs-data-download 是什么?
Download water level data from USGS using the dataretrieval package. Use when accessing real-time or historical streamflow data, downloading gage height or d... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 76 次。
如何安装 usgs-data-download?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install flood-risk-analysis-usgs-data-download」即可一键安装,无需额外配置。
usgs-data-download 是免费的吗?
是的,usgs-data-download 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
usgs-data-download 支持哪些平台?
usgs-data-download 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 usgs-data-download?
由 wu-uk(@wu-uk)开发并维护,当前版本 v0.1.0。