usdata 0.9.0__tar.gz → 0.10.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {usdata-0.9.0 → usdata-0.10.0}/PKG-INFO +33 -18
- {usdata-0.9.0 → usdata-0.10.0}/README.md +32 -17
- {usdata-0.9.0 → usdata-0.10.0}/pyproject.toml +66 -1
- {usdata-0.9.0 → usdata-0.10.0}/pyproject.toml.orig +60 -1
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/data/nexrad_sites.csv +211 -211
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/data/registry.yaml +109 -12
- usdata-0.10.0/src/usdata/providers/noaa/coops.py +141 -0
- usdata-0.10.0/src/usdata/providers/noaa/gsoy.py +46 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/readers.py +3 -2
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/__init__.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/_files.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/_netcdf.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/_progress.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/_radar.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/cache.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/cli/__init__.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/cli/app.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/cli/progress.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/data/places.csv +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/data/places.sources.json +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/fetch.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/manifest.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/models.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/protocols/__init__.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/protocols/erddap.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/protocols/http.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/protocols/s3.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/provenance.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/providers/__init__.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/providers/_http.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/providers/base.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/providers/noaa/__init__.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/providers/noaa/coastwatch.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/providers/noaa/ghcnd.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/providers/noaa/goes.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/providers/noaa/gsom.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/providers/noaa/nexrad.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/providers/noaa/sites.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/providers/noaa/storm_events.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/providers/usgs/__init__.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/providers/usgs/daily.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/pull.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/py.typed +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/query.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/registry.py +0 -0
- {usdata-0.9.0 → usdata-0.10.0}/src/usdata/selection.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: usdata
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.10.0
|
|
4
4
|
Summary: Unified Python SDK and CLI for discovering, fetching, and tracking provenance of U.S. public scientific data
|
|
5
5
|
Keywords: noaa,usgs,nasa,open-data,scientific-data,provenance
|
|
6
6
|
Author: Jake Van Slyke
|
|
@@ -52,33 +52,39 @@ open the resulting local files. Provenance and manifests connect those steps.
|
|
|
52
52
|
- [Runnable examples with saved outputs](examples/README.md)
|
|
53
53
|
- [Readers](docs/reference/readers.md) and [reproducible manifests](docs/reference/manifests.md)
|
|
54
54
|
|
|
55
|
-
##
|
|
55
|
+
## Source installation
|
|
56
|
+
|
|
57
|
+
For features marked **Unreleased**, install this checkout with
|
|
58
|
+
[uv](https://docs.astral.sh/uv/):
|
|
59
|
+
|
|
60
|
+
```sh
|
|
61
|
+
git clone https://github.com/jakeryderv/usdata && cd usdata
|
|
62
|
+
uv sync --extra pandas
|
|
63
|
+
uv run usdata info noaa:coops-water-levels
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Run source examples from this checkout with `uv run usdata` (CLI) or
|
|
67
|
+
`uv run python` (Python). The pandas extra enables CSV reading; use `--extra radar`
|
|
68
|
+
or `--extra netcdf` for those formats. For contribution checks, continue with
|
|
69
|
+
[development setup](#development).
|
|
56
70
|
|
|
57
|
-
|
|
58
|
-
| Provider | Available | Stub | Planned | Next up (unassigned) | Datasets |
|
|
59
|
-
|---|---:|---:|---:|---|---|
|
|
60
|
-
| [NOAA](docs/providers/noaa.md) | 6 | 0 | 23 | — | `ghcn-daily`, `gsom`, `storm-events`, `nexrad-level2`, `goes-abi`, `coastwatch-sst`, +23 planned |
|
|
61
|
-
| [USGS](docs/providers/usgs.md) | 1 | 0 | 2 | — | `water-daily`, +2 planned |
|
|
62
|
-
| [Census Bureau](docs/providers/census.md) | 0 | 0 | 1 | — | +1 planned |
|
|
63
|
-
| [EPA](docs/providers/epa.md) | 0 | 0 | 1 | — | +1 planned |
|
|
64
|
-
| [FEMA](docs/providers/fema.md) | 0 | 0 | 1 | — | +1 planned |
|
|
65
|
-
| [NASA](docs/providers/nasa.md) | 0 | 0 | 1 | — | +1 planned |
|
|
66
|
-
| [USDA](docs/providers/usda.md) | 0 | 0 | 1 | — | +1 planned |
|
|
71
|
+
## Providers
|
|
67
72
|
|
|
68
|
-
|
|
69
|
-
|
|
73
|
+
Browse the [dataset catalog](docs/generated/catalog/index.md) for current support,
|
|
74
|
+
release availability, and dataset details. [Provider access notes](docs/providers/README.md)
|
|
75
|
+
explain agency-specific services; the [roadmap](docs/roadmap.md) describes priorities.
|
|
70
76
|
|
|
71
77
|
## Development
|
|
72
78
|
|
|
73
|
-
|
|
79
|
+
From a [source checkout](#source-installation), requires [uv](https://docs.astral.sh/uv/) and [just](https://just.systems/).
|
|
74
80
|
|
|
75
81
|
`just setup` uses the tested Python 3.14.7 pin in `.python-version`. Older Linux
|
|
76
82
|
uv Python 3.14 builds can crash during NumPy array operations; see
|
|
77
83
|
[the upstream fix](https://github.com/astral-sh/python-build-standalone/issues/991).
|
|
78
84
|
|
|
79
85
|
```sh
|
|
80
|
-
git clone https://github.com/jakeryderv/usdata && cd usdata
|
|
81
86
|
just setup # install toolchain and dependencies
|
|
87
|
+
just hooks-install # optional: install fast staged-file checks
|
|
82
88
|
just test # all offline tests
|
|
83
89
|
just check # format, lint, typecheck, offline tests, generated docs, release notices
|
|
84
90
|
just check-pandas # install the CSV extra and run the same checks
|
|
@@ -90,9 +96,17 @@ just docs-serve # build and preview the documentation locally, with reload
|
|
|
90
96
|
just check-docs # validate generated content and build the site strictly
|
|
91
97
|
just build # build wheel and sdist
|
|
92
98
|
just smoke # exercise core and pandas wheel installations outside the checkout
|
|
99
|
+
just changes # preview upcoming release notes
|
|
100
|
+
just cleanup 123 # from main: remove PR #123's merged branch and clean worktree
|
|
93
101
|
just run search radar
|
|
94
102
|
```
|
|
95
103
|
|
|
104
|
+
Commit hooks fix and format staged Python files using the locked Ruff version,
|
|
105
|
+
and check configuration, merge conflicts, and GitHub Actions workflows. Full
|
|
106
|
+
validation remains `just check`; `just check-hooks` runs the non-mutating config
|
|
107
|
+
and workflow checks alone. Hooks do not rewrite notebooks or raw data fixtures.
|
|
108
|
+
The first hook run downloads its isolated tools and requires network access.
|
|
109
|
+
|
|
96
110
|
Offline tests mechanically block network connections. Tests that hit
|
|
97
111
|
live services run with `just test-live`; see [testing levels and organization](docs/testing.md). CI checks Python 3.11 and 3.14 on
|
|
98
112
|
Linux with core-only, pandas, radar, and NetCDF dependency profiles. Installed-wheel
|
|
@@ -101,8 +115,9 @@ live-service suites run on Linux. `just setup` restores a core-only development
|
|
|
101
115
|
environment; the `check-pandas`, `check-radar`, and `check-netcdf` commands install
|
|
102
116
|
their respective extras.
|
|
103
117
|
|
|
104
|
-
Releases: `just release minor`
|
|
105
|
-
|
|
118
|
+
Releases: `just release minor` prepares a release branch. Update release notices,
|
|
119
|
+
then `just release-pr` validates and opens a draft for review. Merging the reviewed
|
|
120
|
+
PR publishes to PyPI and creates the tag and GitHub release. See
|
|
106
121
|
[docs/versioning.md](docs/versioning.md).
|
|
107
122
|
|
|
108
123
|
See [provider access notes](docs/providers/README.md),
|
|
@@ -24,33 +24,39 @@ open the resulting local files. Provenance and manifests connect those steps.
|
|
|
24
24
|
- [Runnable examples with saved outputs](examples/README.md)
|
|
25
25
|
- [Readers](docs/reference/readers.md) and [reproducible manifests](docs/reference/manifests.md)
|
|
26
26
|
|
|
27
|
-
##
|
|
27
|
+
## Source installation
|
|
28
|
+
|
|
29
|
+
For features marked **Unreleased**, install this checkout with
|
|
30
|
+
[uv](https://docs.astral.sh/uv/):
|
|
31
|
+
|
|
32
|
+
```sh
|
|
33
|
+
git clone https://github.com/jakeryderv/usdata && cd usdata
|
|
34
|
+
uv sync --extra pandas
|
|
35
|
+
uv run usdata info noaa:coops-water-levels
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Run source examples from this checkout with `uv run usdata` (CLI) or
|
|
39
|
+
`uv run python` (Python). The pandas extra enables CSV reading; use `--extra radar`
|
|
40
|
+
or `--extra netcdf` for those formats. For contribution checks, continue with
|
|
41
|
+
[development setup](#development).
|
|
28
42
|
|
|
29
|
-
|
|
30
|
-
| Provider | Available | Stub | Planned | Next up (unassigned) | Datasets |
|
|
31
|
-
|---|---:|---:|---:|---|---|
|
|
32
|
-
| [NOAA](docs/providers/noaa.md) | 6 | 0 | 23 | — | `ghcn-daily`, `gsom`, `storm-events`, `nexrad-level2`, `goes-abi`, `coastwatch-sst`, +23 planned |
|
|
33
|
-
| [USGS](docs/providers/usgs.md) | 1 | 0 | 2 | — | `water-daily`, +2 planned |
|
|
34
|
-
| [Census Bureau](docs/providers/census.md) | 0 | 0 | 1 | — | +1 planned |
|
|
35
|
-
| [EPA](docs/providers/epa.md) | 0 | 0 | 1 | — | +1 planned |
|
|
36
|
-
| [FEMA](docs/providers/fema.md) | 0 | 0 | 1 | — | +1 planned |
|
|
37
|
-
| [NASA](docs/providers/nasa.md) | 0 | 0 | 1 | — | +1 planned |
|
|
38
|
-
| [USDA](docs/providers/usda.md) | 0 | 0 | 1 | — | +1 planned |
|
|
43
|
+
## Providers
|
|
39
44
|
|
|
40
|
-
|
|
41
|
-
|
|
45
|
+
Browse the [dataset catalog](docs/generated/catalog/index.md) for current support,
|
|
46
|
+
release availability, and dataset details. [Provider access notes](docs/providers/README.md)
|
|
47
|
+
explain agency-specific services; the [roadmap](docs/roadmap.md) describes priorities.
|
|
42
48
|
|
|
43
49
|
## Development
|
|
44
50
|
|
|
45
|
-
|
|
51
|
+
From a [source checkout](#source-installation), requires [uv](https://docs.astral.sh/uv/) and [just](https://just.systems/).
|
|
46
52
|
|
|
47
53
|
`just setup` uses the tested Python 3.14.7 pin in `.python-version`. Older Linux
|
|
48
54
|
uv Python 3.14 builds can crash during NumPy array operations; see
|
|
49
55
|
[the upstream fix](https://github.com/astral-sh/python-build-standalone/issues/991).
|
|
50
56
|
|
|
51
57
|
```sh
|
|
52
|
-
git clone https://github.com/jakeryderv/usdata && cd usdata
|
|
53
58
|
just setup # install toolchain and dependencies
|
|
59
|
+
just hooks-install # optional: install fast staged-file checks
|
|
54
60
|
just test # all offline tests
|
|
55
61
|
just check # format, lint, typecheck, offline tests, generated docs, release notices
|
|
56
62
|
just check-pandas # install the CSV extra and run the same checks
|
|
@@ -62,9 +68,17 @@ just docs-serve # build and preview the documentation locally, with reload
|
|
|
62
68
|
just check-docs # validate generated content and build the site strictly
|
|
63
69
|
just build # build wheel and sdist
|
|
64
70
|
just smoke # exercise core and pandas wheel installations outside the checkout
|
|
71
|
+
just changes # preview upcoming release notes
|
|
72
|
+
just cleanup 123 # from main: remove PR #123's merged branch and clean worktree
|
|
65
73
|
just run search radar
|
|
66
74
|
```
|
|
67
75
|
|
|
76
|
+
Commit hooks fix and format staged Python files using the locked Ruff version,
|
|
77
|
+
and check configuration, merge conflicts, and GitHub Actions workflows. Full
|
|
78
|
+
validation remains `just check`; `just check-hooks` runs the non-mutating config
|
|
79
|
+
and workflow checks alone. Hooks do not rewrite notebooks or raw data fixtures.
|
|
80
|
+
The first hook run downloads its isolated tools and requires network access.
|
|
81
|
+
|
|
68
82
|
Offline tests mechanically block network connections. Tests that hit
|
|
69
83
|
live services run with `just test-live`; see [testing levels and organization](docs/testing.md). CI checks Python 3.11 and 3.14 on
|
|
70
84
|
Linux with core-only, pandas, radar, and NetCDF dependency profiles. Installed-wheel
|
|
@@ -73,8 +87,9 @@ live-service suites run on Linux. `just setup` restores a core-only development
|
|
|
73
87
|
environment; the `check-pandas`, `check-radar`, and `check-netcdf` commands install
|
|
74
88
|
their respective extras.
|
|
75
89
|
|
|
76
|
-
Releases: `just release minor`
|
|
77
|
-
|
|
90
|
+
Releases: `just release minor` prepares a release branch. Update release notices,
|
|
91
|
+
then `just release-pr` validates and opens a draft for review. Merging the reviewed
|
|
92
|
+
PR publishes to PyPI and creates the tag and GitHub release. See
|
|
78
93
|
[docs/versioning.md](docs/versioning.md).
|
|
79
94
|
|
|
80
95
|
See [provider access notes](docs/providers/README.md),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "usdata"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.10.0"
|
|
4
4
|
description = "Unified Python SDK and CLI for discovering, fetching, and tracking provenance of U.S. public scientific data"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -47,15 +47,19 @@ usdata = "usdata.cli:app"
|
|
|
47
47
|
|
|
48
48
|
[dependency-groups]
|
|
49
49
|
dev = [
|
|
50
|
+
"pre-commit>=4.6.0",
|
|
50
51
|
"pyright>=1.1.380",
|
|
51
52
|
"pytest>=8.0",
|
|
52
53
|
"pytest-cov>=7.1.0",
|
|
53
54
|
"respx>=0.23.1",
|
|
54
55
|
"ruff>=0.6",
|
|
56
|
+
"towncrier>=26.9",
|
|
55
57
|
]
|
|
56
58
|
docs = [
|
|
59
|
+
"tomli-w>=1.2.0",
|
|
57
60
|
"mkdocstrings-python>=2.0.8",
|
|
58
61
|
"nbconvert>=7.17.1",
|
|
62
|
+
"towncrier>=26.9",
|
|
59
63
|
"zensical>=0.0.60",
|
|
60
64
|
]
|
|
61
65
|
examples = [
|
|
@@ -126,3 +130,64 @@ markers = [
|
|
|
126
130
|
"netcdf: optional NetCDF reader coverage",
|
|
127
131
|
]
|
|
128
132
|
addopts = "-ra --strict-markers"
|
|
133
|
+
|
|
134
|
+
[tool.towncrier]
|
|
135
|
+
directory = "changes"
|
|
136
|
+
filename = "CHANGELOG.md"
|
|
137
|
+
start_string = """
|
|
138
|
+
<!-- towncrier release notes start -->
|
|
139
|
+
"""
|
|
140
|
+
underlines = [
|
|
141
|
+
"",
|
|
142
|
+
"",
|
|
143
|
+
"",
|
|
144
|
+
]
|
|
145
|
+
title_format = "## [{version}](https://github.com/jakeryderv/usdata/releases/tag/v{version}) - {project_date}"
|
|
146
|
+
issue_format = "[#{issue}](https://github.com/jakeryderv/usdata/issues/{issue})"
|
|
147
|
+
template = "scripts/templates/changelog.md.jinja"
|
|
148
|
+
wrap = false
|
|
149
|
+
|
|
150
|
+
[[tool.towncrier.type]]
|
|
151
|
+
directory = "breaking"
|
|
152
|
+
name = "Breaking"
|
|
153
|
+
showcontent = true
|
|
154
|
+
|
|
155
|
+
[[tool.towncrier.type]]
|
|
156
|
+
directory = "security"
|
|
157
|
+
name = "Security"
|
|
158
|
+
showcontent = true
|
|
159
|
+
|
|
160
|
+
[[tool.towncrier.type]]
|
|
161
|
+
directory = "removed"
|
|
162
|
+
name = "Removed"
|
|
163
|
+
showcontent = true
|
|
164
|
+
|
|
165
|
+
[[tool.towncrier.type]]
|
|
166
|
+
directory = "added"
|
|
167
|
+
name = "Added"
|
|
168
|
+
showcontent = true
|
|
169
|
+
|
|
170
|
+
[[tool.towncrier.type]]
|
|
171
|
+
directory = "changed"
|
|
172
|
+
name = "Changed"
|
|
173
|
+
showcontent = true
|
|
174
|
+
|
|
175
|
+
[[tool.towncrier.type]]
|
|
176
|
+
directory = "fixed"
|
|
177
|
+
name = "Fixed"
|
|
178
|
+
showcontent = true
|
|
179
|
+
|
|
180
|
+
[[tool.towncrier.type]]
|
|
181
|
+
directory = "documentation"
|
|
182
|
+
name = "Documentation"
|
|
183
|
+
showcontent = true
|
|
184
|
+
|
|
185
|
+
[[tool.towncrier.type]]
|
|
186
|
+
directory = "development"
|
|
187
|
+
name = "Development"
|
|
188
|
+
showcontent = true
|
|
189
|
+
|
|
190
|
+
[[tool.towncrier.type]]
|
|
191
|
+
directory = "internal"
|
|
192
|
+
name = "Internal"
|
|
193
|
+
showcontent = true
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "usdata"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.10.0"
|
|
4
4
|
description = "Unified Python SDK and CLI for discovering, fetching, and tracking provenance of U.S. public scientific data"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -36,15 +36,19 @@ usdata = "usdata.cli:app"
|
|
|
36
36
|
|
|
37
37
|
[dependency-groups]
|
|
38
38
|
dev = [
|
|
39
|
+
"pre-commit>=4.6.0",
|
|
39
40
|
"pyright>=1.1.380",
|
|
40
41
|
"pytest>=8.0",
|
|
41
42
|
"pytest-cov>=7.1.0",
|
|
42
43
|
"respx>=0.23.1",
|
|
43
44
|
"ruff>=0.6",
|
|
45
|
+
"towncrier>=26.9",
|
|
44
46
|
]
|
|
45
47
|
docs = [
|
|
48
|
+
"tomli-w>=1.2.0",
|
|
46
49
|
"mkdocstrings-python>=2.0.8",
|
|
47
50
|
"nbconvert>=7.17.1",
|
|
51
|
+
"towncrier>=26.9",
|
|
48
52
|
"zensical>=0.0.60",
|
|
49
53
|
]
|
|
50
54
|
examples = [
|
|
@@ -98,3 +102,58 @@ markers = [
|
|
|
98
102
|
"netcdf: optional NetCDF reader coverage",
|
|
99
103
|
]
|
|
100
104
|
addopts = "-ra --strict-markers"
|
|
105
|
+
|
|
106
|
+
[tool.towncrier]
|
|
107
|
+
directory = "changes"
|
|
108
|
+
filename = "CHANGELOG.md"
|
|
109
|
+
start_string = "<!-- towncrier release notes start -->\n"
|
|
110
|
+
underlines = ["", "", ""]
|
|
111
|
+
title_format = "## [{version}](https://github.com/jakeryderv/usdata/releases/tag/v{version}) - {project_date}"
|
|
112
|
+
issue_format = "[#{issue}](https://github.com/jakeryderv/usdata/issues/{issue})"
|
|
113
|
+
template = "scripts/templates/changelog.md.jinja"
|
|
114
|
+
wrap = false
|
|
115
|
+
|
|
116
|
+
[[tool.towncrier.type]]
|
|
117
|
+
directory = "breaking"
|
|
118
|
+
name = "Breaking"
|
|
119
|
+
showcontent = true
|
|
120
|
+
|
|
121
|
+
[[tool.towncrier.type]]
|
|
122
|
+
directory = "security"
|
|
123
|
+
name = "Security"
|
|
124
|
+
showcontent = true
|
|
125
|
+
|
|
126
|
+
[[tool.towncrier.type]]
|
|
127
|
+
directory = "removed"
|
|
128
|
+
name = "Removed"
|
|
129
|
+
showcontent = true
|
|
130
|
+
|
|
131
|
+
[[tool.towncrier.type]]
|
|
132
|
+
directory = "added"
|
|
133
|
+
name = "Added"
|
|
134
|
+
showcontent = true
|
|
135
|
+
|
|
136
|
+
[[tool.towncrier.type]]
|
|
137
|
+
directory = "changed"
|
|
138
|
+
name = "Changed"
|
|
139
|
+
showcontent = true
|
|
140
|
+
|
|
141
|
+
[[tool.towncrier.type]]
|
|
142
|
+
directory = "fixed"
|
|
143
|
+
name = "Fixed"
|
|
144
|
+
showcontent = true
|
|
145
|
+
|
|
146
|
+
[[tool.towncrier.type]]
|
|
147
|
+
directory = "documentation"
|
|
148
|
+
name = "Documentation"
|
|
149
|
+
showcontent = true
|
|
150
|
+
|
|
151
|
+
[[tool.towncrier.type]]
|
|
152
|
+
directory = "development"
|
|
153
|
+
name = "Development"
|
|
154
|
+
showcontent = true
|
|
155
|
+
|
|
156
|
+
[[tool.towncrier.type]]
|
|
157
|
+
directory = "internal"
|
|
158
|
+
name = "Internal"
|
|
159
|
+
showcontent = true
|
|
@@ -1,211 +1,211 @@
|
|
|
1
|
-
id,name,state,lat,lon,elev_ft,type
|
|
2
|
-
KABR,Aberdeen,SD,45.455833,-98.413333,1383,NEXRAD
|
|
3
|
-
KABX,Albuquerque,NM,35.149722,-106.82388,5951,NEXRAD
|
|
4
|
-
KAKQ,Norfolk Rich,VA,36.98405,-77.007361,255,NEXRAD
|
|
5
|
-
KAMA,Amarillo,TX,35.233333,-101.70927,3703,NEXRAD
|
|
6
|
-
KAMX,Miami,FL,25.611083,-80.412667,111,NEXRAD
|
|
7
|
-
KAPX,Gaylord,MI,44.90635,-84.719533,1561,NEXRAD
|
|
8
|
-
KARX,La Crosse,WI,43.822778,-91.191111,1357,NEXRAD
|
|
9
|
-
KATX,Seattle,WA,48.194611,-122.49569,642,NEXRAD
|
|
10
|
-
KBBX,Beale Afb,CA,39.495639,-121.63161,221,NEXRAD
|
|
11
|
-
KBGM,Binghamton,NY,42.199694,-75.984722,1703,NEXRAD
|
|
12
|
-
KBHX,Eureka,CA,40.498583,-124.29216,2516,NEXRAD
|
|
13
|
-
KBIS,Bismarck,ND,46.770833,-100.76055,1755,NEXRAD
|
|
14
|
-
KBLX,Billings,MT,45.853778,-108.60680,3703,NEXRAD
|
|
15
|
-
KBMX,Birmingham,AL,33.172417,-86.770167,759,NEXRAD
|
|
16
|
-
KBOX,Boston,MA,41.955778,-71.136861,232,NEXRAD
|
|
17
|
-
KBRO,Brownsville,TX,25.916,-97.418967,88,NEXRAD
|
|
18
|
-
KBUF,Buffalo,NY,42.948789,-78.736781,790,NEXRAD
|
|
19
|
-
KBYX,Key West,FL,24.5975,-81.703167,89,NEXRAD
|
|
20
|
-
KCAE,Columbia,SC,33.948722,-81.118278,345,NEXRAD
|
|
21
|
-
KCBW,Houlton,ME,46.03925,-67.806431,860,NEXRAD
|
|
22
|
-
KCBX,Boise,ID,43.490217,-116.23603,3172,NEXRAD
|
|
23
|
-
KCCX,State College,PA,40.923167,-78.003722,2486,NEXRAD
|
|
24
|
-
KCLE,Cleveland,OH,41.413217,-81.859867,860,NEXRAD
|
|
25
|
-
KCLX,Charleston,SC,32.655528,-81.042194,229,NEXRAD
|
|
26
|
-
KCRI,Roc Faa Redundant Rda 1,OK,35.238333,-97.46,1315,TEST
|
|
27
|
-
KCRP,Corpus Christi,TX,27.784017,-97.51125,142,NEXRAD
|
|
28
|
-
KCXX,Burlington,VT,44.511,-73.166431,431,NEXRAD
|
|
29
|
-
KCYS,Cheyenne,WY,41.151919,-104.80603,6193,NEXRAD
|
|
30
|
-
KDAX,Sacramento,CA,38.501111,-121.67783,144,NEXRAD
|
|
31
|
-
KDDC,Dodge City,KS,37.760833,-99.968889,2671,NEXRAD
|
|
32
|
-
KDFX,Laughlin Afb,TX,29.273139,-100.28033,1196,NEXRAD
|
|
33
|
-
KDGX,Jackson Brandon,MS,32.279944,-89.984444,609,NEXRAD
|
|
34
|
-
KDIX,Philadelphia,NJ,39.947089,-74.410731,230,NEXRAD
|
|
35
|
-
KDLH,Duluth,MN,46.836944,-92.209722,1542,NEXRAD
|
|
36
|
-
KDMX,Des Moines,IA,41.7312,-93.722869,1095,NEXRAD
|
|
37
|
-
KDOX,Dover Afb,DE,38.825767,-75.440117,164,NEXRAD
|
|
38
|
-
KDTX,Detroit,MI,42.7,-83.471667,1216,NEXRAD
|
|
39
|
-
KDVN,Davenport,IA,41.611667,-90.580833,851,NEXRAD
|
|
40
|
-
KDYX,Dyess Afb,TX,32.5385,-99.254333,1582,NEXRAD
|
|
41
|
-
KEAX,Kansas City,MO,38.81025,-94.264472,1092,NEXRAD
|
|
42
|
-
KEMX,Tucson,AZ,31.89365,-110.63025,5319,NEXRAD
|
|
43
|
-
KENX,Albany,NY,42.586556,-74.064083,1935,NEXRAD
|
|
44
|
-
KEOX,Fort Rucker,AL,31.460556,-85.459389,537,NEXRAD
|
|
45
|
-
KEPZ,El Paso,NM,31.873056,-106.698,4218,NEXRAD
|
|
46
|
-
KESX,Las Vegas,NV,35.70135,-114.89165,4948,NEXRAD
|
|
47
|
-
KEVX,Eglin Afb,FL,30.565033,-85.921667,221,NEXRAD
|
|
48
|
-
KEWX,Austin San Antonio,TX,29.704056,-98.028611,767,NEXRAD
|
|
49
|
-
KEYX,Edwards,CA,35.09785,-117.56075,2873,NEXRAD
|
|
50
|
-
KFCX,Roanoke,VA,37.0244,-80.273969,2965,NEXRAD
|
|
51
|
-
KFDR,Altus Afb,OK,34.362194,-98.976667,1315,NEXRAD
|
|
52
|
-
KFDX,Cannon Afb,NM,34.634167,-103.61888,4698,NEXRAD
|
|
53
|
-
KFFC,Atlanta,GA,33.36355,-84.56595,972,NEXRAD
|
|
54
|
-
KFSD,Sioux Falls,SD,43.587778,-96.729444,1495,NEXRAD
|
|
55
|
-
KFSX,Flagstaff,AZ,34.574333,-111.19844,7514,NEXRAD
|
|
56
|
-
KFTG,Denver Front Range Ap,CO,39.786639,-104.54580,5611,NEXRAD
|
|
57
|
-
KFWS,Dallas,TX,32.573,-97.30315,777,NEXRAD
|
|
58
|
-
KGGW,Glasgow,MT,48.206361,-106.62469,2384,NEXRAD
|
|
59
|
-
KGJX,Grand Junction,CO,39.062169,-108.21376,10101,NEXRAD
|
|
60
|
-
KGLD,Goodland,KS,39.366944,-101.70027,3716,NEXRAD
|
|
61
|
-
KGRB,Green Bay,WI,44.498633,-88.111111,823,NEXRAD
|
|
62
|
-
KGRK,Fort Hood,TX,30.721833,-97.382944,603,NEXRAD
|
|
63
|
-
KGRR,Grand Rapids,MI,42.893889,-85.544889,875,NEXRAD
|
|
64
|
-
KGSP,Greer,SC,34.883306,-82.219833,1069,NEXRAD
|
|
65
|
-
KGWX,Columbus Afb,MS,33.896917,-88.329194,590,NEXRAD
|
|
66
|
-
KGYX,Portland,ME,43.891306,-70.256361,474,NEXRAD
|
|
67
|
-
KHDC,Hammond Municipal Airport,LA,30.5193,-90.4074,43,NEXRAD
|
|
68
|
-
KHDX,Holloman Afb,NM,33.077,-106.12003,4270,NEXRAD
|
|
69
|
-
KHGX,Houston,TX,29.4719,-95.078733,115,NEXRAD
|
|
70
|
-
KHNX,San Joaquin Valley,CA,36.314181,-119.63213,340,NEXRAD
|
|
71
|
-
KHPX,Fort Campbell,KY,36.736972,-87.285583,613,NEXRAD
|
|
72
|
-
KHTX,Huntsville,AL,34.930556,-86.083611,1859,NEXRAD
|
|
73
|
-
KICT,Wichita,KS,37.654444,-97.443056,1400,NEXRAD
|
|
74
|
-
KICX,Cedar City,UT,37.59105,-112.86218,10757,NEXRAD
|
|
75
|
-
KILN,Cincinnati,OH,39.420483,-83.82145,1170,NEXRAD
|
|
76
|
-
KILX,Lincoln,IL,40.1505,-89.336792,731,NEXRAD
|
|
77
|
-
KIND,Indianapolis,IN,39.7075,-86.280278,887,NEXRAD
|
|
78
|
-
KINX,Tulsa,OK,36.175131,-95.564161,749,NEXRAD
|
|
79
|
-
KIWA,Phoenix,AZ,33.289233,-111.66991,1426,NEXRAD
|
|
80
|
-
KIWX,Fort Wayne,IN,41.358611,-85.7,1056,NEXRAD
|
|
81
|
-
KJAX,Jacksonville,FL,30.484633,-81.7019,160,NEXRAD
|
|
82
|
-
KJGX,Robins Afb,GA,32.675683,-83.350833,618,NEXRAD
|
|
83
|
-
KJKL,Jackson,KY,37.590833,-83.313056,1461,NEXRAD
|
|
84
|
-
KLBB,Lubbock,TX,33.654139,-101.81416,3378,NEXRAD
|
|
85
|
-
KLCH,Lake Charles,LA,30.125306,-93.215889,137,NEXRAD
|
|
86
|
-
KLGX,Langley Hill Nw Washington,WA,47.116944,-124.10666,366,NEXRAD
|
|
87
|
-
KLIX,New Orleans,LA,30.336667,-89.825417,179,NEXRAD
|
|
88
|
-
KLNX,North Platte,NE,41.957944,-100.57622,3113,NEXRAD
|
|
89
|
-
KLOT,Chicago,IL,41.604444,-88.084444,760,NEXRAD
|
|
90
|
-
KLRX,Elko,NV,40.73955,-116.8027,6895,NEXRAD
|
|
91
|
-
KLSX,St Louis,MO,38.698611,-90.682778,722,NEXRAD
|
|
92
|
-
KLTX,Wilmington,NC,33.98915,-78.429108,145,NEXRAD
|
|
93
|
-
KLVX,Louisville,KY,37.975278,-85.943889,833,NEXRAD
|
|
94
|
-
KLWX,Sterling,VA,38.976111,-77.4875,404,NEXRAD
|
|
95
|
-
KLZK,Little Rock,AR,34.8365,-92.262194,649,NEXRAD
|
|
96
|
-
KMAF,Midland Odessa,TX,31.943461,-102.18925,2962,NEXRAD
|
|
97
|
-
KMAX,Medford,OR,42.081169,-122.71736,7561,NEXRAD
|
|
98
|
-
KMBX,Minot Afb,ND,48.393056,-100.86444,1590,NEXRAD
|
|
99
|
-
KMHX,Morehead City,NC,34.775908,-76.876189,145,NEXRAD
|
|
100
|
-
KMKX,Milwaukee,WI,42.9679,-88.550667,1023,NEXRAD
|
|
101
|
-
KMLB,Melbourne,FL,28.113194,-80.654083,149,NEXRAD
|
|
102
|
-
KMOB,Mobile,AL,30.679444,-88.24,289,NEXRAD
|
|
103
|
-
KMPX,Minneapolis,MN,44.848889,-93.565528,1101,NEXRAD
|
|
104
|
-
KMQT,Marquette,MI,46.531111,-87.548333,1525,NEXRAD
|
|
105
|
-
KMRX,Knoxville,TN,36.168611,-83.401944,1434,NEXRAD
|
|
106
|
-
KMSX,Missoula,MT,47.041,-113.98622,7978,NEXRAD
|
|
107
|
-
KMTX,Salt Lake City,UT,41.262778,-112.44777,6594,NEXRAD
|
|
108
|
-
KMUX,San Francisco,CA,37.155222,-121.89844,3550,NEXRAD
|
|
109
|
-
KMVX,Grand Forks,ND,47.527778,-97.325556,1083,NEXRAD
|
|
110
|
-
KMXX,Maxwell Afb,AL,32.53665,-85.78975,560,NEXRAD
|
|
111
|
-
KNKX,San Diego,CA,32.919017,-117.0418,1052,NEXRAD
|
|
112
|
-
KNQA,Memphis,TN,35.344722,-89.873333,435,NEXRAD
|
|
113
|
-
KOAX,Omaha,NE,41.320369,-96.366819,1262,NEXRAD
|
|
114
|
-
KOHX,Nashville,TN,36.247222,-86.5625,676,NEXRAD
|
|
115
|
-
KOKX,New York City,NY,40.865528,-72.863917,199,NEXRAD
|
|
116
|
-
KOTX,Spokane,WA,47.680417,-117.62677,2449,NEXRAD
|
|
117
|
-
KOUN,Norman Nssl,OK,35.236058,-97.46235,1284,TEST
|
|
118
|
-
KPAH,Paducah,KY,37.068333,-88.771944,506,NEXRAD
|
|
119
|
-
KPBZ,Pittsburgh,PA,40.531717,-80.217967,1266,NEXRAD
|
|
120
|
-
KPDT,Pendleton,OR,45.69065,-118.85293,1580,NEXRAD
|
|
121
|
-
KPOE,Fort Polk,LA,31.155278,-92.976111,473,NEXRAD
|
|
122
|
-
KPUX,Pueblo,CO,38.45955,-104.18135,5363,NEXRAD
|
|
123
|
-
KRAX,Raleigh Durham,NC,35.665519,-78.48975,462,NEXRAD
|
|
124
|
-
KRGX,Reno,NV,39.754056,-119.46202,8396,NEXRAD
|
|
125
|
-
KRIW,Riverton,WY,43.066089,-108.4773,5633,NEXRAD
|
|
126
|
-
KRLX,Charleston,WV,38.311111,-81.722778,1213,NEXRAD
|
|
127
|
-
KRTX,Portland,OR,45.715039,-122.965,1728,NEXRAD
|
|
128
|
-
KSFX,Pocatello,ID,43.1056,-112.68613,4539,NEXRAD
|
|
129
|
-
KSGF,Springfield,MO,37.235239,-93.400419,1375,NEXRAD
|
|
130
|
-
KSHV,Shreveport,LA,32.450833,-93.84125,387,NEXRAD
|
|
131
|
-
KSJT,San Angelo,TX,31.371278,-100.4925,2004,NEXRAD
|
|
132
|
-
KSOX,Santa Ana Mountains,CA,33.817733,-117.636,3106,NEXRAD
|
|
133
|
-
KSRX,Fort Smith,AR,35.290417,-94.361889,737,NEXRAD
|
|
134
|
-
KTBW,Tampa,FL,27.7055,-82.401778,122,NEXRAD
|
|
135
|
-
KTFX,Great Falls,MT,47.459583,-111.38533,3805,NEXRAD
|
|
136
|
-
KTLH,Tallahassee,FL,30.397583,-84.328944,177,NEXRAD
|
|
137
|
-
KTLX,Oklahoma City,OK,35.333361,-97.277761,1278,NEXRAD
|
|
138
|
-
KTWX,Topeka,KS,38.99695,-96.23255,1415,NEXRAD
|
|
139
|
-
KTYX,Fort Drum,NY,43.755694,-75.679861,1960,NEXRAD
|
|
140
|
-
KUDX,Rapid City,SD,44.124722,-102.83,3195,NEXRAD
|
|
141
|
-
KUEX,Hastings,NE,40.320833,-98.441944,2057,NEXRAD
|
|
142
|
-
KVAX,Moody Afb,GA,30.890278,-83.001806,330,NEXRAD
|
|
143
|
-
KVBX,Vandenberg Afb,CA,34.83855,-120.39791,1354,NEXRAD
|
|
144
|
-
KVNX,Vance Afb,OK,36.740617,-98.127717,1258,NEXRAD
|
|
145
|
-
KVTX,Los Angeles,CA,34.412017,-119.17875,2807,NEXRAD
|
|
146
|
-
KVWX,Evansville,IN,38.26025,-87.724528,625,NEXRAD
|
|
147
|
-
KYUX,Yuma,AZ,32.495281,-114.65671,239,NEXRAD
|
|
148
|
-
LPLA,Lajes Ab,,38.73028,-27.32167,3334,NEXRAD
|
|
149
|
-
PABC,Bethel Faa,AK,60.791944,-161.87638,193,NEXRAD
|
|
150
|
-
PACG,Sitka,AK,56.852778,-135.52916,272,NEXRAD
|
|
151
|
-
PAEC,Nome,AK,64.511389,-165.295,90,NEXRAD
|
|
152
|
-
PAHG,Anchorage,AK,60.725914,-151.35146,356,NEXRAD
|
|
153
|
-
PAIH,Middleton Island,AK,59.460767,-146.30344,132,NEXRAD
|
|
154
|
-
PAKC,King Salmon,AK,58.679444,-156.62944,144,NEXRAD
|
|
155
|
-
PAPD,Fairbanks,AK,65.035114,-147.50143,2707,NEXRAD
|
|
156
|
-
PGUA,Andersen Afb Agana,GU,13.455833,144.811111,386,NEXRAD
|
|
157
|
-
PHKI,South Kauai,HI,21.893889,-159.5525,340,NEXRAD
|
|
158
|
-
PHKM,Kamuela,HI,20.125278,-155.77777,3966,NEXRAD
|
|
159
|
-
PHMO,Molokai,HI,21.132778,-157.18027,1444,NEXRAD
|
|
160
|
-
PHWA,South Shore,HI,19.095,-155.56888,1461,NEXRAD
|
|
161
|
-
RKJK,Kunsan,,35.924167,126.622222,192,NEXRAD
|
|
162
|
-
RKSG,Camp Humphreys,,37.207569,127.285561,1521,NEXRAD
|
|
163
|
-
RODN,Kadena,,26.3078,127.903469,412,NEXRAD
|
|
164
|
-
TADW,Andrews Afb,MD,38.695,-76.845,344,TDWR
|
|
165
|
-
TATL,Atlanta,GA,33.646944,-84.261944,1076,TDWR
|
|
166
|
-
TBNA,Nashville,TN,35.98,-86.661944,817,TDWR
|
|
167
|
-
TBOS,Boston,MA,42.158056,-70.933056,262,TDWR
|
|
168
|
-
TBWI,Baltimore Washington,MD,39.09,-76.63,299,TDWR
|
|
169
|
-
TCLT,Charlotte,NC,35.336944,-80.885,869,TDWR
|
|
170
|
-
TCMH,Columbus,OH,40.006111,-82.715,1148,TDWR
|
|
171
|
-
TCVG,Covington,KY,38.898056,-84.58,1053,TDWR
|
|
172
|
-
TDAL,Dallas Love Field,TX,32.926111,-96.968056,623,TDWR
|
|
173
|
-
TDAY,Dayton,OH,40.021944,-84.123056,1020,TDWR
|
|
174
|
-
TDCA,Washington National,MD,38.758889,-76.961944,344,TDWR
|
|
175
|
-
TDEN,Denver,CO,39.728056,-104.52611,5702,TDWR
|
|
176
|
-
TDFW,Dallas Ft Worth,TX,33.065,-96.918056,584,TDWR
|
|
177
|
-
TDTW,Detroit,MI,42.111111,-83.515,771,TDWR
|
|
178
|
-
TEWR,Newark,NJ,40.593056,-74.27,135,TDWR
|
|
179
|
-
TFLL,Ft Lauderdale,FL,26.143056,-80.343889,121,TDWR
|
|
180
|
-
THOU,Houston Hobby,TX,29.516111,-95.241944,118,TDWR
|
|
181
|
-
TIAD,Washington Dulles,VA,39.083889,-77.528889,472,TDWR
|
|
182
|
-
TIAH,Houston International,TX,30.065,-95.566944,253,TDWR
|
|
183
|
-
TICH,Wichita,KS,37.506944,-97.436944,1352,TDWR
|
|
184
|
-
TIDS,Indianapolis,IN,39.636944,-86.436111,846,TDWR
|
|
185
|
-
TJBQ,Rafael Hernandez Airport,PR,18.485,-67.143,280,TDWR
|
|
186
|
-
TJFK,New York City Jfk,NY,40.588889,-73.881111,112,TDWR
|
|
187
|
-
TJRV,Jose Aponte De La Torre Airpor,PR,18.256,-65.637,50,TDWR
|
|
188
|
-
TJUA,San Juan,PR,18.115667,-66.078167,2958,NEXRAD
|
|
189
|
-
TLAS,Las Vegas,NV,36.143889,-115.00694,2057,TDWR
|
|
190
|
-
TLVE,Cleveland,OH,41.29,-82.008056,932,TDWR
|
|
191
|
-
TMCI,Kansas City,MO,39.498056,-94.741944,1089,TDWR
|
|
192
|
-
TMCO,Orlando International,FL,28.343889,-81.326111,171,TDWR
|
|
193
|
-
TMDW,Chicago Midway,IL,41.651111,-87.73,764,TDWR
|
|
194
|
-
TMEM,Memphis,MS,34.896111,-89.993056,482,TDWR
|
|
195
|
-
TMIA,Miami,FL,25.758056,-80.491111,125,TDWR
|
|
196
|
-
TMKE,Milwaukee,WI,42.818889,-88.046111,932,TDWR
|
|
197
|
-
TMSP,Minneapolis,MN,44.871111,-92.933056,1122,TDWR
|
|
198
|
-
TMSY,New Orleans,LA,30.021944,-90.403056,98,TDWR
|
|
199
|
-
TOKC,Norman Wfo,OK,35.276111,-97.51,1309,TDWR
|
|
200
|
-
TORD,Chicago Ohare,IL,41.796944,-87.858056,745,TDWR
|
|
201
|
-
TPBI,West Palm Beach,FL,26.688056,-80.273056,135,TDWR
|
|
202
|
-
TPHL,Philadelphia,NJ,39.948889,-75.068889,154,TDWR
|
|
203
|
-
TPHX,Phoenix,AZ,33.421111,-112.16305,1089,TDWR
|
|
204
|
-
TPIT,Pittsburgh,PA,40.501111,-80.486111,1385,TDWR
|
|
205
|
-
TRDU,Raleigh,NC,36.001944,-78.696944,515,TDWR
|
|
206
|
-
TSDF,Louisville,KY,38.046111,-85.61,732,TDWR
|
|
207
|
-
TSJU,San Juan,PR,18.473889,-66.178889,157,TDWR
|
|
208
|
-
TSLC,Salt Lake City,UT,40.966944,-111.93,4295,TDWR
|
|
209
|
-
TSTL,St Louis,MO,38.805,-90.488889,646,TDWR
|
|
210
|
-
TTPA,Tampa,FL,27.86,-82.518056,92,TDWR
|
|
211
|
-
TTUL,Tulsa,OK,36.071111,-95.826944,823,TDWR
|
|
1
|
+
id,name,state,lat,lon,elev_ft,type
|
|
2
|
+
KABR,Aberdeen,SD,45.455833,-98.413333,1383,NEXRAD
|
|
3
|
+
KABX,Albuquerque,NM,35.149722,-106.82388,5951,NEXRAD
|
|
4
|
+
KAKQ,Norfolk Rich,VA,36.98405,-77.007361,255,NEXRAD
|
|
5
|
+
KAMA,Amarillo,TX,35.233333,-101.70927,3703,NEXRAD
|
|
6
|
+
KAMX,Miami,FL,25.611083,-80.412667,111,NEXRAD
|
|
7
|
+
KAPX,Gaylord,MI,44.90635,-84.719533,1561,NEXRAD
|
|
8
|
+
KARX,La Crosse,WI,43.822778,-91.191111,1357,NEXRAD
|
|
9
|
+
KATX,Seattle,WA,48.194611,-122.49569,642,NEXRAD
|
|
10
|
+
KBBX,Beale Afb,CA,39.495639,-121.63161,221,NEXRAD
|
|
11
|
+
KBGM,Binghamton,NY,42.199694,-75.984722,1703,NEXRAD
|
|
12
|
+
KBHX,Eureka,CA,40.498583,-124.29216,2516,NEXRAD
|
|
13
|
+
KBIS,Bismarck,ND,46.770833,-100.76055,1755,NEXRAD
|
|
14
|
+
KBLX,Billings,MT,45.853778,-108.60680,3703,NEXRAD
|
|
15
|
+
KBMX,Birmingham,AL,33.172417,-86.770167,759,NEXRAD
|
|
16
|
+
KBOX,Boston,MA,41.955778,-71.136861,232,NEXRAD
|
|
17
|
+
KBRO,Brownsville,TX,25.916,-97.418967,88,NEXRAD
|
|
18
|
+
KBUF,Buffalo,NY,42.948789,-78.736781,790,NEXRAD
|
|
19
|
+
KBYX,Key West,FL,24.5975,-81.703167,89,NEXRAD
|
|
20
|
+
KCAE,Columbia,SC,33.948722,-81.118278,345,NEXRAD
|
|
21
|
+
KCBW,Houlton,ME,46.03925,-67.806431,860,NEXRAD
|
|
22
|
+
KCBX,Boise,ID,43.490217,-116.23603,3172,NEXRAD
|
|
23
|
+
KCCX,State College,PA,40.923167,-78.003722,2486,NEXRAD
|
|
24
|
+
KCLE,Cleveland,OH,41.413217,-81.859867,860,NEXRAD
|
|
25
|
+
KCLX,Charleston,SC,32.655528,-81.042194,229,NEXRAD
|
|
26
|
+
KCRI,Roc Faa Redundant Rda 1,OK,35.238333,-97.46,1315,TEST
|
|
27
|
+
KCRP,Corpus Christi,TX,27.784017,-97.51125,142,NEXRAD
|
|
28
|
+
KCXX,Burlington,VT,44.511,-73.166431,431,NEXRAD
|
|
29
|
+
KCYS,Cheyenne,WY,41.151919,-104.80603,6193,NEXRAD
|
|
30
|
+
KDAX,Sacramento,CA,38.501111,-121.67783,144,NEXRAD
|
|
31
|
+
KDDC,Dodge City,KS,37.760833,-99.968889,2671,NEXRAD
|
|
32
|
+
KDFX,Laughlin Afb,TX,29.273139,-100.28033,1196,NEXRAD
|
|
33
|
+
KDGX,Jackson Brandon,MS,32.279944,-89.984444,609,NEXRAD
|
|
34
|
+
KDIX,Philadelphia,NJ,39.947089,-74.410731,230,NEXRAD
|
|
35
|
+
KDLH,Duluth,MN,46.836944,-92.209722,1542,NEXRAD
|
|
36
|
+
KDMX,Des Moines,IA,41.7312,-93.722869,1095,NEXRAD
|
|
37
|
+
KDOX,Dover Afb,DE,38.825767,-75.440117,164,NEXRAD
|
|
38
|
+
KDTX,Detroit,MI,42.7,-83.471667,1216,NEXRAD
|
|
39
|
+
KDVN,Davenport,IA,41.611667,-90.580833,851,NEXRAD
|
|
40
|
+
KDYX,Dyess Afb,TX,32.5385,-99.254333,1582,NEXRAD
|
|
41
|
+
KEAX,Kansas City,MO,38.81025,-94.264472,1092,NEXRAD
|
|
42
|
+
KEMX,Tucson,AZ,31.89365,-110.63025,5319,NEXRAD
|
|
43
|
+
KENX,Albany,NY,42.586556,-74.064083,1935,NEXRAD
|
|
44
|
+
KEOX,Fort Rucker,AL,31.460556,-85.459389,537,NEXRAD
|
|
45
|
+
KEPZ,El Paso,NM,31.873056,-106.698,4218,NEXRAD
|
|
46
|
+
KESX,Las Vegas,NV,35.70135,-114.89165,4948,NEXRAD
|
|
47
|
+
KEVX,Eglin Afb,FL,30.565033,-85.921667,221,NEXRAD
|
|
48
|
+
KEWX,Austin San Antonio,TX,29.704056,-98.028611,767,NEXRAD
|
|
49
|
+
KEYX,Edwards,CA,35.09785,-117.56075,2873,NEXRAD
|
|
50
|
+
KFCX,Roanoke,VA,37.0244,-80.273969,2965,NEXRAD
|
|
51
|
+
KFDR,Altus Afb,OK,34.362194,-98.976667,1315,NEXRAD
|
|
52
|
+
KFDX,Cannon Afb,NM,34.634167,-103.61888,4698,NEXRAD
|
|
53
|
+
KFFC,Atlanta,GA,33.36355,-84.56595,972,NEXRAD
|
|
54
|
+
KFSD,Sioux Falls,SD,43.587778,-96.729444,1495,NEXRAD
|
|
55
|
+
KFSX,Flagstaff,AZ,34.574333,-111.19844,7514,NEXRAD
|
|
56
|
+
KFTG,Denver Front Range Ap,CO,39.786639,-104.54580,5611,NEXRAD
|
|
57
|
+
KFWS,Dallas,TX,32.573,-97.30315,777,NEXRAD
|
|
58
|
+
KGGW,Glasgow,MT,48.206361,-106.62469,2384,NEXRAD
|
|
59
|
+
KGJX,Grand Junction,CO,39.062169,-108.21376,10101,NEXRAD
|
|
60
|
+
KGLD,Goodland,KS,39.366944,-101.70027,3716,NEXRAD
|
|
61
|
+
KGRB,Green Bay,WI,44.498633,-88.111111,823,NEXRAD
|
|
62
|
+
KGRK,Fort Hood,TX,30.721833,-97.382944,603,NEXRAD
|
|
63
|
+
KGRR,Grand Rapids,MI,42.893889,-85.544889,875,NEXRAD
|
|
64
|
+
KGSP,Greer,SC,34.883306,-82.219833,1069,NEXRAD
|
|
65
|
+
KGWX,Columbus Afb,MS,33.896917,-88.329194,590,NEXRAD
|
|
66
|
+
KGYX,Portland,ME,43.891306,-70.256361,474,NEXRAD
|
|
67
|
+
KHDC,Hammond Municipal Airport,LA,30.5193,-90.4074,43,NEXRAD
|
|
68
|
+
KHDX,Holloman Afb,NM,33.077,-106.12003,4270,NEXRAD
|
|
69
|
+
KHGX,Houston,TX,29.4719,-95.078733,115,NEXRAD
|
|
70
|
+
KHNX,San Joaquin Valley,CA,36.314181,-119.63213,340,NEXRAD
|
|
71
|
+
KHPX,Fort Campbell,KY,36.736972,-87.285583,613,NEXRAD
|
|
72
|
+
KHTX,Huntsville,AL,34.930556,-86.083611,1859,NEXRAD
|
|
73
|
+
KICT,Wichita,KS,37.654444,-97.443056,1400,NEXRAD
|
|
74
|
+
KICX,Cedar City,UT,37.59105,-112.86218,10757,NEXRAD
|
|
75
|
+
KILN,Cincinnati,OH,39.420483,-83.82145,1170,NEXRAD
|
|
76
|
+
KILX,Lincoln,IL,40.1505,-89.336792,731,NEXRAD
|
|
77
|
+
KIND,Indianapolis,IN,39.7075,-86.280278,887,NEXRAD
|
|
78
|
+
KINX,Tulsa,OK,36.175131,-95.564161,749,NEXRAD
|
|
79
|
+
KIWA,Phoenix,AZ,33.289233,-111.66991,1426,NEXRAD
|
|
80
|
+
KIWX,Fort Wayne,IN,41.358611,-85.7,1056,NEXRAD
|
|
81
|
+
KJAX,Jacksonville,FL,30.484633,-81.7019,160,NEXRAD
|
|
82
|
+
KJGX,Robins Afb,GA,32.675683,-83.350833,618,NEXRAD
|
|
83
|
+
KJKL,Jackson,KY,37.590833,-83.313056,1461,NEXRAD
|
|
84
|
+
KLBB,Lubbock,TX,33.654139,-101.81416,3378,NEXRAD
|
|
85
|
+
KLCH,Lake Charles,LA,30.125306,-93.215889,137,NEXRAD
|
|
86
|
+
KLGX,Langley Hill Nw Washington,WA,47.116944,-124.10666,366,NEXRAD
|
|
87
|
+
KLIX,New Orleans,LA,30.336667,-89.825417,179,NEXRAD
|
|
88
|
+
KLNX,North Platte,NE,41.957944,-100.57622,3113,NEXRAD
|
|
89
|
+
KLOT,Chicago,IL,41.604444,-88.084444,760,NEXRAD
|
|
90
|
+
KLRX,Elko,NV,40.73955,-116.8027,6895,NEXRAD
|
|
91
|
+
KLSX,St Louis,MO,38.698611,-90.682778,722,NEXRAD
|
|
92
|
+
KLTX,Wilmington,NC,33.98915,-78.429108,145,NEXRAD
|
|
93
|
+
KLVX,Louisville,KY,37.975278,-85.943889,833,NEXRAD
|
|
94
|
+
KLWX,Sterling,VA,38.976111,-77.4875,404,NEXRAD
|
|
95
|
+
KLZK,Little Rock,AR,34.8365,-92.262194,649,NEXRAD
|
|
96
|
+
KMAF,Midland Odessa,TX,31.943461,-102.18925,2962,NEXRAD
|
|
97
|
+
KMAX,Medford,OR,42.081169,-122.71736,7561,NEXRAD
|
|
98
|
+
KMBX,Minot Afb,ND,48.393056,-100.86444,1590,NEXRAD
|
|
99
|
+
KMHX,Morehead City,NC,34.775908,-76.876189,145,NEXRAD
|
|
100
|
+
KMKX,Milwaukee,WI,42.9679,-88.550667,1023,NEXRAD
|
|
101
|
+
KMLB,Melbourne,FL,28.113194,-80.654083,149,NEXRAD
|
|
102
|
+
KMOB,Mobile,AL,30.679444,-88.24,289,NEXRAD
|
|
103
|
+
KMPX,Minneapolis,MN,44.848889,-93.565528,1101,NEXRAD
|
|
104
|
+
KMQT,Marquette,MI,46.531111,-87.548333,1525,NEXRAD
|
|
105
|
+
KMRX,Knoxville,TN,36.168611,-83.401944,1434,NEXRAD
|
|
106
|
+
KMSX,Missoula,MT,47.041,-113.98622,7978,NEXRAD
|
|
107
|
+
KMTX,Salt Lake City,UT,41.262778,-112.44777,6594,NEXRAD
|
|
108
|
+
KMUX,San Francisco,CA,37.155222,-121.89844,3550,NEXRAD
|
|
109
|
+
KMVX,Grand Forks,ND,47.527778,-97.325556,1083,NEXRAD
|
|
110
|
+
KMXX,Maxwell Afb,AL,32.53665,-85.78975,560,NEXRAD
|
|
111
|
+
KNKX,San Diego,CA,32.919017,-117.0418,1052,NEXRAD
|
|
112
|
+
KNQA,Memphis,TN,35.344722,-89.873333,435,NEXRAD
|
|
113
|
+
KOAX,Omaha,NE,41.320369,-96.366819,1262,NEXRAD
|
|
114
|
+
KOHX,Nashville,TN,36.247222,-86.5625,676,NEXRAD
|
|
115
|
+
KOKX,New York City,NY,40.865528,-72.863917,199,NEXRAD
|
|
116
|
+
KOTX,Spokane,WA,47.680417,-117.62677,2449,NEXRAD
|
|
117
|
+
KOUN,Norman Nssl,OK,35.236058,-97.46235,1284,TEST
|
|
118
|
+
KPAH,Paducah,KY,37.068333,-88.771944,506,NEXRAD
|
|
119
|
+
KPBZ,Pittsburgh,PA,40.531717,-80.217967,1266,NEXRAD
|
|
120
|
+
KPDT,Pendleton,OR,45.69065,-118.85293,1580,NEXRAD
|
|
121
|
+
KPOE,Fort Polk,LA,31.155278,-92.976111,473,NEXRAD
|
|
122
|
+
KPUX,Pueblo,CO,38.45955,-104.18135,5363,NEXRAD
|
|
123
|
+
KRAX,Raleigh Durham,NC,35.665519,-78.48975,462,NEXRAD
|
|
124
|
+
KRGX,Reno,NV,39.754056,-119.46202,8396,NEXRAD
|
|
125
|
+
KRIW,Riverton,WY,43.066089,-108.4773,5633,NEXRAD
|
|
126
|
+
KRLX,Charleston,WV,38.311111,-81.722778,1213,NEXRAD
|
|
127
|
+
KRTX,Portland,OR,45.715039,-122.965,1728,NEXRAD
|
|
128
|
+
KSFX,Pocatello,ID,43.1056,-112.68613,4539,NEXRAD
|
|
129
|
+
KSGF,Springfield,MO,37.235239,-93.400419,1375,NEXRAD
|
|
130
|
+
KSHV,Shreveport,LA,32.450833,-93.84125,387,NEXRAD
|
|
131
|
+
KSJT,San Angelo,TX,31.371278,-100.4925,2004,NEXRAD
|
|
132
|
+
KSOX,Santa Ana Mountains,CA,33.817733,-117.636,3106,NEXRAD
|
|
133
|
+
KSRX,Fort Smith,AR,35.290417,-94.361889,737,NEXRAD
|
|
134
|
+
KTBW,Tampa,FL,27.7055,-82.401778,122,NEXRAD
|
|
135
|
+
KTFX,Great Falls,MT,47.459583,-111.38533,3805,NEXRAD
|
|
136
|
+
KTLH,Tallahassee,FL,30.397583,-84.328944,177,NEXRAD
|
|
137
|
+
KTLX,Oklahoma City,OK,35.333361,-97.277761,1278,NEXRAD
|
|
138
|
+
KTWX,Topeka,KS,38.99695,-96.23255,1415,NEXRAD
|
|
139
|
+
KTYX,Fort Drum,NY,43.755694,-75.679861,1960,NEXRAD
|
|
140
|
+
KUDX,Rapid City,SD,44.124722,-102.83,3195,NEXRAD
|
|
141
|
+
KUEX,Hastings,NE,40.320833,-98.441944,2057,NEXRAD
|
|
142
|
+
KVAX,Moody Afb,GA,30.890278,-83.001806,330,NEXRAD
|
|
143
|
+
KVBX,Vandenberg Afb,CA,34.83855,-120.39791,1354,NEXRAD
|
|
144
|
+
KVNX,Vance Afb,OK,36.740617,-98.127717,1258,NEXRAD
|
|
145
|
+
KVTX,Los Angeles,CA,34.412017,-119.17875,2807,NEXRAD
|
|
146
|
+
KVWX,Evansville,IN,38.26025,-87.724528,625,NEXRAD
|
|
147
|
+
KYUX,Yuma,AZ,32.495281,-114.65671,239,NEXRAD
|
|
148
|
+
LPLA,Lajes Ab,,38.73028,-27.32167,3334,NEXRAD
|
|
149
|
+
PABC,Bethel Faa,AK,60.791944,-161.87638,193,NEXRAD
|
|
150
|
+
PACG,Sitka,AK,56.852778,-135.52916,272,NEXRAD
|
|
151
|
+
PAEC,Nome,AK,64.511389,-165.295,90,NEXRAD
|
|
152
|
+
PAHG,Anchorage,AK,60.725914,-151.35146,356,NEXRAD
|
|
153
|
+
PAIH,Middleton Island,AK,59.460767,-146.30344,132,NEXRAD
|
|
154
|
+
PAKC,King Salmon,AK,58.679444,-156.62944,144,NEXRAD
|
|
155
|
+
PAPD,Fairbanks,AK,65.035114,-147.50143,2707,NEXRAD
|
|
156
|
+
PGUA,Andersen Afb Agana,GU,13.455833,144.811111,386,NEXRAD
|
|
157
|
+
PHKI,South Kauai,HI,21.893889,-159.5525,340,NEXRAD
|
|
158
|
+
PHKM,Kamuela,HI,20.125278,-155.77777,3966,NEXRAD
|
|
159
|
+
PHMO,Molokai,HI,21.132778,-157.18027,1444,NEXRAD
|
|
160
|
+
PHWA,South Shore,HI,19.095,-155.56888,1461,NEXRAD
|
|
161
|
+
RKJK,Kunsan,,35.924167,126.622222,192,NEXRAD
|
|
162
|
+
RKSG,Camp Humphreys,,37.207569,127.285561,1521,NEXRAD
|
|
163
|
+
RODN,Kadena,,26.3078,127.903469,412,NEXRAD
|
|
164
|
+
TADW,Andrews Afb,MD,38.695,-76.845,344,TDWR
|
|
165
|
+
TATL,Atlanta,GA,33.646944,-84.261944,1076,TDWR
|
|
166
|
+
TBNA,Nashville,TN,35.98,-86.661944,817,TDWR
|
|
167
|
+
TBOS,Boston,MA,42.158056,-70.933056,262,TDWR
|
|
168
|
+
TBWI,Baltimore Washington,MD,39.09,-76.63,299,TDWR
|
|
169
|
+
TCLT,Charlotte,NC,35.336944,-80.885,869,TDWR
|
|
170
|
+
TCMH,Columbus,OH,40.006111,-82.715,1148,TDWR
|
|
171
|
+
TCVG,Covington,KY,38.898056,-84.58,1053,TDWR
|
|
172
|
+
TDAL,Dallas Love Field,TX,32.926111,-96.968056,623,TDWR
|
|
173
|
+
TDAY,Dayton,OH,40.021944,-84.123056,1020,TDWR
|
|
174
|
+
TDCA,Washington National,MD,38.758889,-76.961944,344,TDWR
|
|
175
|
+
TDEN,Denver,CO,39.728056,-104.52611,5702,TDWR
|
|
176
|
+
TDFW,Dallas Ft Worth,TX,33.065,-96.918056,584,TDWR
|
|
177
|
+
TDTW,Detroit,MI,42.111111,-83.515,771,TDWR
|
|
178
|
+
TEWR,Newark,NJ,40.593056,-74.27,135,TDWR
|
|
179
|
+
TFLL,Ft Lauderdale,FL,26.143056,-80.343889,121,TDWR
|
|
180
|
+
THOU,Houston Hobby,TX,29.516111,-95.241944,118,TDWR
|
|
181
|
+
TIAD,Washington Dulles,VA,39.083889,-77.528889,472,TDWR
|
|
182
|
+
TIAH,Houston International,TX,30.065,-95.566944,253,TDWR
|
|
183
|
+
TICH,Wichita,KS,37.506944,-97.436944,1352,TDWR
|
|
184
|
+
TIDS,Indianapolis,IN,39.636944,-86.436111,846,TDWR
|
|
185
|
+
TJBQ,Rafael Hernandez Airport,PR,18.485,-67.143,280,TDWR
|
|
186
|
+
TJFK,New York City Jfk,NY,40.588889,-73.881111,112,TDWR
|
|
187
|
+
TJRV,Jose Aponte De La Torre Airpor,PR,18.256,-65.637,50,TDWR
|
|
188
|
+
TJUA,San Juan,PR,18.115667,-66.078167,2958,NEXRAD
|
|
189
|
+
TLAS,Las Vegas,NV,36.143889,-115.00694,2057,TDWR
|
|
190
|
+
TLVE,Cleveland,OH,41.29,-82.008056,932,TDWR
|
|
191
|
+
TMCI,Kansas City,MO,39.498056,-94.741944,1089,TDWR
|
|
192
|
+
TMCO,Orlando International,FL,28.343889,-81.326111,171,TDWR
|
|
193
|
+
TMDW,Chicago Midway,IL,41.651111,-87.73,764,TDWR
|
|
194
|
+
TMEM,Memphis,MS,34.896111,-89.993056,482,TDWR
|
|
195
|
+
TMIA,Miami,FL,25.758056,-80.491111,125,TDWR
|
|
196
|
+
TMKE,Milwaukee,WI,42.818889,-88.046111,932,TDWR
|
|
197
|
+
TMSP,Minneapolis,MN,44.871111,-92.933056,1122,TDWR
|
|
198
|
+
TMSY,New Orleans,LA,30.021944,-90.403056,98,TDWR
|
|
199
|
+
TOKC,Norman Wfo,OK,35.276111,-97.51,1309,TDWR
|
|
200
|
+
TORD,Chicago Ohare,IL,41.796944,-87.858056,745,TDWR
|
|
201
|
+
TPBI,West Palm Beach,FL,26.688056,-80.273056,135,TDWR
|
|
202
|
+
TPHL,Philadelphia,NJ,39.948889,-75.068889,154,TDWR
|
|
203
|
+
TPHX,Phoenix,AZ,33.421111,-112.16305,1089,TDWR
|
|
204
|
+
TPIT,Pittsburgh,PA,40.501111,-80.486111,1385,TDWR
|
|
205
|
+
TRDU,Raleigh,NC,36.001944,-78.696944,515,TDWR
|
|
206
|
+
TSDF,Louisville,KY,38.046111,-85.61,732,TDWR
|
|
207
|
+
TSJU,San Juan,PR,18.473889,-66.178889,157,TDWR
|
|
208
|
+
TSLC,Salt Lake City,UT,40.966944,-111.93,4295,TDWR
|
|
209
|
+
TSTL,St Louis,MO,38.805,-90.488889,646,TDWR
|
|
210
|
+
TTPA,Tampa,FL,27.86,-82.518056,92,TDWR
|
|
211
|
+
TTUL,Tulsa,OK,36.071111,-95.826944,823,TDWR
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Curated dataset registry: the single source of truth for what usdata knows about.
|
|
2
|
-
# Rendered to docs/
|
|
2
|
+
# Rendered exclusively to docs/generated/catalog/ by `just docs`.
|
|
3
3
|
#
|
|
4
4
|
# status: available = adapter implemented and tested (since: version it shipped in)
|
|
5
5
|
# stub = adapter class exists but raises NotImplementedProvider (target: version or later)
|
|
@@ -196,20 +196,21 @@ datasets:
|
|
|
196
196
|
|
|
197
197
|
- id: noaa:coops-water-levels
|
|
198
198
|
provider: noaa
|
|
199
|
-
status:
|
|
199
|
+
status: available
|
|
200
200
|
domain: sea-level-tides
|
|
201
|
-
|
|
202
|
-
title: CO-OPS Water Levels
|
|
201
|
+
since: "0.10"
|
|
202
|
+
title: CO-OPS Observed Water Levels
|
|
203
203
|
description: >-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
station
|
|
204
|
+
Preliminary or verified six-minute observed water levels from the
|
|
205
|
+
anonymous CO-OPS Data API. Select one station, an explicit vertical datum,
|
|
206
|
+
units, and a UTC interval of at most 28 days. Raw CSV retains quality flags;
|
|
207
|
+
predictions and station discovery are not included.
|
|
208
208
|
keywords: [tides, water level, sea level, coastal, coops, nwlon, stations]
|
|
209
209
|
protocol: http
|
|
210
210
|
homepage: https://api.tidesandcurrents.noaa.gov/api/prod/
|
|
211
211
|
license: US Government Work (public domain)
|
|
212
|
-
capabilities: { spatial_subset: false, temporal_subset: true, variable_subset:
|
|
212
|
+
capabilities: { spatial_subset: false, temporal_subset: true, variable_subset: false }
|
|
213
|
+
adapter: usdata.providers.noaa.coops:CoopsWaterLevels
|
|
213
214
|
|
|
214
215
|
- id: noaa:gsom
|
|
215
216
|
provider: noaa
|
|
@@ -232,18 +233,21 @@ datasets:
|
|
|
232
233
|
|
|
233
234
|
- id: noaa:gsoy
|
|
234
235
|
provider: noaa
|
|
235
|
-
status:
|
|
236
|
+
status: available
|
|
236
237
|
domain: surface-weather
|
|
237
|
-
|
|
238
|
+
since: "0.10"
|
|
238
239
|
title: Global Summary of the Year
|
|
239
240
|
description: >-
|
|
240
241
|
Annual station summaries derived from GHCN-Daily via the NCEI Access Data
|
|
241
|
-
Service dataset global-summary-of-the-year.
|
|
242
|
+
Service dataset global-summary-of-the-year. Selects complete UTC calendar
|
|
243
|
+
years and explicit stations, or discovers stations through the search service.
|
|
242
244
|
keywords: [climate, annual, stations, temperature, precipitation, gsoy, ncei]
|
|
243
245
|
protocol: http
|
|
244
246
|
homepage: https://www.ncei.noaa.gov/access/search/data-search/global-summary-of-the-year
|
|
245
247
|
license: US Government Work (public domain)
|
|
246
248
|
capabilities: { spatial_subset: false, temporal_subset: true, variable_subset: true }
|
|
249
|
+
spatial_extent: { west: -180.0, south: -90.0, east: 180.0, north: 90.0 }
|
|
250
|
+
adapter: usdata.providers.noaa.gsoy:GlobalSummaryYearly
|
|
247
251
|
|
|
248
252
|
- id: noaa:climate-normals
|
|
249
253
|
provider: noaa
|
|
@@ -675,3 +679,96 @@ datasets:
|
|
|
675
679
|
homepage: https://www.nass.usda.gov/Research_and_Science/Cropland/SARS1a.php
|
|
676
680
|
license: US Government Work (public domain)
|
|
677
681
|
capabilities: { spatial_subset: true, temporal_subset: true, variable_subset: false }
|
|
682
|
+
|
|
683
|
+
# Documentation composition keyed by stable dataset ID; validated by just docs.
|
|
684
|
+
catalog:
|
|
685
|
+
noaa:ghcn-daily:
|
|
686
|
+
guide: docs/providers/noaa-ghcn.md
|
|
687
|
+
summary: Daily station weather
|
|
688
|
+
formats:
|
|
689
|
+
- CSV
|
|
690
|
+
selection: Station observations within inclusive calendar dates; selected elements
|
|
691
|
+
inputs: Both dates; station IDs or a geographic query
|
|
692
|
+
reader_extra: pandas
|
|
693
|
+
examples:
|
|
694
|
+
- examples/weather-and-streamflow/example.ipynb
|
|
695
|
+
noaa:gsom:
|
|
696
|
+
guide: docs/providers/noaa-gsom.md
|
|
697
|
+
summary: Monthly station climate
|
|
698
|
+
formats:
|
|
699
|
+
- CSV
|
|
700
|
+
selection: Complete UTC calendar months touched by the query; station and element filters
|
|
701
|
+
inputs: Both dates; station IDs or a geographic query
|
|
702
|
+
reader_extra: pandas
|
|
703
|
+
examples:
|
|
704
|
+
- examples/monthly-climate/example.ipynb
|
|
705
|
+
noaa:gsoy:
|
|
706
|
+
guide: docs/providers/noaa-gsoy.md
|
|
707
|
+
summary: Annual station climate
|
|
708
|
+
formats:
|
|
709
|
+
- CSV
|
|
710
|
+
selection: Complete UTC calendar years touched by the query; station and element filters
|
|
711
|
+
inputs: Both dates; station IDs or a geographic query
|
|
712
|
+
reader_extra: pandas
|
|
713
|
+
examples:
|
|
714
|
+
- examples/annual-climate/README.md
|
|
715
|
+
noaa:nexrad-level2:
|
|
716
|
+
guide: docs/providers/noaa-nexrad.md
|
|
717
|
+
summary: NEXRAD radar scans
|
|
718
|
+
formats:
|
|
719
|
+
- NEXRAD Level II
|
|
720
|
+
selection: Whole radar scans by site and inclusive UTC scan-start time
|
|
721
|
+
inputs: Both timestamps; radar IDs or a geographic query
|
|
722
|
+
reader_extra: radar
|
|
723
|
+
examples:
|
|
724
|
+
- examples/radar-reflectivity/example.ipynb
|
|
725
|
+
noaa:goes-abi:
|
|
726
|
+
guide: docs/providers/noaa-goes.md
|
|
727
|
+
summary: GOES CONUS imagery
|
|
728
|
+
formats:
|
|
729
|
+
- NetCDF4
|
|
730
|
+
selection: Whole single-channel CONUS scenes by inclusive UTC scan-start time
|
|
731
|
+
inputs: Satellite, channel, and both timestamps
|
|
732
|
+
reader_extra: netcdf
|
|
733
|
+
examples:
|
|
734
|
+
- examples/goes-imagery/example.ipynb
|
|
735
|
+
noaa:storm-events:
|
|
736
|
+
guide: docs/providers/noaa-storm-events.md
|
|
737
|
+
summary: Storm Events details
|
|
738
|
+
formats:
|
|
739
|
+
- gzip CSV
|
|
740
|
+
selection: Whole annual archives; filter rows locally after downloading
|
|
741
|
+
inputs: Both dates (selects the containing years)
|
|
742
|
+
reader_extra: pandas
|
|
743
|
+
examples:
|
|
744
|
+
- examples/storm-events/example.ipynb
|
|
745
|
+
noaa:coastwatch-sst:
|
|
746
|
+
guide: docs/providers/noaa-coastwatch.md
|
|
747
|
+
summary: Sea-surface temperature
|
|
748
|
+
formats:
|
|
749
|
+
- CSV with units row
|
|
750
|
+
selection: Grid centers and timestamps inside the requested bounds; optional stride
|
|
751
|
+
inputs: BBox or location, and both timestamps
|
|
752
|
+
reader_extra: pandas
|
|
753
|
+
examples:
|
|
754
|
+
- examples/sst-analysis/example.ipynb
|
|
755
|
+
noaa:coops-water-levels:
|
|
756
|
+
guide: docs/providers/noaa-coops.md
|
|
757
|
+
summary: Coastal water levels
|
|
758
|
+
formats:
|
|
759
|
+
- CSV
|
|
760
|
+
selection: Six-minute observations for one station and datum; at most 28 days
|
|
761
|
+
inputs: Station, datum, and both minute-aligned timestamps
|
|
762
|
+
reader_extra: pandas
|
|
763
|
+
examples:
|
|
764
|
+
- examples/coastal-water-levels/README.md
|
|
765
|
+
usgs:water-daily:
|
|
766
|
+
guide: docs/providers/usgs-water-daily.md
|
|
767
|
+
summary: Daily water observations
|
|
768
|
+
formats:
|
|
769
|
+
- CSV
|
|
770
|
+
selection: Site observations for inclusive local calendar dates; parameter and statistic filters
|
|
771
|
+
inputs: Both dates; site IDs or a geographic query
|
|
772
|
+
reader_extra: pandas
|
|
773
|
+
examples:
|
|
774
|
+
- examples/weather-and-streamflow/example.ipynb
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"""Observed six-minute CO-OPS water levels as raw CSV.
|
|
2
|
+
|
|
3
|
+
Params: one seven-digit ``station``, an explicit ``datum``, and optional
|
|
4
|
+
``units`` (metric or english). Both dates are required at minute precision;
|
|
5
|
+
requests use UTC and span at most 28 days. Predictions are not included.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import csv
|
|
11
|
+
import hashlib
|
|
12
|
+
from datetime import UTC, datetime, timedelta
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
|
|
15
|
+
import httpx
|
|
16
|
+
|
|
17
|
+
from usdata._files import staged_path
|
|
18
|
+
from usdata.models import Asset, Protocol, Query, TimeRange
|
|
19
|
+
from usdata.protocols import http
|
|
20
|
+
from usdata.providers._http import _HttpProvider
|
|
21
|
+
from usdata.providers.base import QueryError
|
|
22
|
+
|
|
23
|
+
DATA_URL = "https://api.tidesandcurrents.noaa.gov/api/prod/datagetter"
|
|
24
|
+
DATUMS = {"CRD", "IGLD", "LWD", "MHHW", "MHW", "MTL", "MSL", "MLW", "MLLW", "NAVD", "STND"}
|
|
25
|
+
MAX_INTERVAL = timedelta(days=28)
|
|
26
|
+
REQUIRED_COLUMNS = {
|
|
27
|
+
"Date Time",
|
|
28
|
+
"Water Level",
|
|
29
|
+
"Sigma",
|
|
30
|
+
"O or I (for verified)",
|
|
31
|
+
"F",
|
|
32
|
+
"R",
|
|
33
|
+
"L",
|
|
34
|
+
"Quality",
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _validate_csv(path: Path, asset: Asset) -> None:
|
|
39
|
+
"""Reject error documents and malformed/empty responses before committing bytes."""
|
|
40
|
+
try:
|
|
41
|
+
with path.open(encoding="utf-8-sig", newline="") as stream:
|
|
42
|
+
records = csv.reader(stream, strict=True)
|
|
43
|
+
columns = [name.strip() for name in next(records, [])]
|
|
44
|
+
if (
|
|
45
|
+
any(not name for name in columns)
|
|
46
|
+
or len(set(columns)) != len(columns)
|
|
47
|
+
or not REQUIRED_COLUMNS.issubset(columns)
|
|
48
|
+
):
|
|
49
|
+
raise ValueError("missing expected water-level CSV columns")
|
|
50
|
+
count = 0
|
|
51
|
+
for values in records:
|
|
52
|
+
if values and values[0].startswith("Error:"):
|
|
53
|
+
raise ValueError(values[0][:512])
|
|
54
|
+
if len(values) != len(columns):
|
|
55
|
+
raise ValueError("CSV row does not match the header")
|
|
56
|
+
row = dict(zip(columns, values, strict=True))
|
|
57
|
+
when = datetime.strptime(row["Date Time"].strip(), "%Y-%m-%d %H:%M").replace(
|
|
58
|
+
tzinfo=UTC
|
|
59
|
+
)
|
|
60
|
+
if asset.time is not None and not asset.time.overlaps(
|
|
61
|
+
TimeRange(start=when, end=when)
|
|
62
|
+
):
|
|
63
|
+
raise ValueError("observation lies outside the requested interval")
|
|
64
|
+
if row["Quality"].strip() not in {"p", "v"}:
|
|
65
|
+
raise ValueError("unrecognized observation quality")
|
|
66
|
+
for field in ("Water Level", "Sigma"):
|
|
67
|
+
if row[field].strip():
|
|
68
|
+
float(row[field])
|
|
69
|
+
count += 1
|
|
70
|
+
if not count:
|
|
71
|
+
raise ValueError("no water-level observations returned")
|
|
72
|
+
except (ValueError, UnicodeError, csv.Error) as error:
|
|
73
|
+
raise httpx.DecodingError(
|
|
74
|
+
f"CO-OPS returned no usable water-level CSV: {error}",
|
|
75
|
+
request=httpx.Request("GET", asset.href),
|
|
76
|
+
) from error
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
class CoopsWaterLevels(_HttpProvider):
|
|
80
|
+
"""One station's observed water levels, preserving source units and quality fields."""
|
|
81
|
+
|
|
82
|
+
def list_assets(self, query: Query) -> list[Asset]:
|
|
83
|
+
"""Describe one bounded CSV request; availability is checked during fetching."""
|
|
84
|
+
if unknown := set(query.params) - {"station", "datum", "units"}:
|
|
85
|
+
raise QueryError(f"unsupported {self.dataset.id} params: {', '.join(sorted(unknown))}")
|
|
86
|
+
if query.bbox is not None or query.text is not None or query.variables:
|
|
87
|
+
raise QueryError(
|
|
88
|
+
"CO-OPS requires an explicit station; location, text and variables are unsupported"
|
|
89
|
+
)
|
|
90
|
+
station = query.params.get("station")
|
|
91
|
+
if (
|
|
92
|
+
not isinstance(station, str)
|
|
93
|
+
or len(station) != 7
|
|
94
|
+
or not station.isascii()
|
|
95
|
+
or not station.isdigit()
|
|
96
|
+
):
|
|
97
|
+
raise QueryError("station must be a seven-digit string, for example '8518750'")
|
|
98
|
+
datum = query.params.get("datum")
|
|
99
|
+
if not isinstance(datum, str) or datum not in DATUMS:
|
|
100
|
+
raise QueryError(f"datum must be explicit: {', '.join(sorted(DATUMS))}")
|
|
101
|
+
units = query.params.get("units", "metric")
|
|
102
|
+
if units not in ("metric", "english"):
|
|
103
|
+
raise QueryError("units must be metric or english")
|
|
104
|
+
if query.time is None or query.time.start is None or query.time.end is None:
|
|
105
|
+
raise QueryError(f"{self.dataset.id} requires both start and end timestamps")
|
|
106
|
+
start = query.time.start.replace(tzinfo=query.time.start.tzinfo or UTC).astimezone(UTC)
|
|
107
|
+
end = query.time.end.replace(tzinfo=query.time.end.tzinfo or UTC).astimezone(UTC)
|
|
108
|
+
if any(value.second or value.microsecond for value in (start, end)):
|
|
109
|
+
raise QueryError("CO-OPS timestamps must have minute precision (zero seconds)")
|
|
110
|
+
if end - start > MAX_INTERVAL:
|
|
111
|
+
raise QueryError("CO-OPS requests must span at most 28 days; split longer intervals")
|
|
112
|
+
params = {
|
|
113
|
+
"station": station,
|
|
114
|
+
"product": "water_level",
|
|
115
|
+
"begin_date": start.strftime("%Y%m%d %H:%M"),
|
|
116
|
+
"end_date": end.strftime("%Y%m%d %H:%M"),
|
|
117
|
+
"datum": datum,
|
|
118
|
+
"units": units,
|
|
119
|
+
"time_zone": "gmt",
|
|
120
|
+
"format": "csv",
|
|
121
|
+
"application": "usdata",
|
|
122
|
+
}
|
|
123
|
+
url = str(httpx.URL(DATA_URL, params=params))
|
|
124
|
+
digest = hashlib.sha256(url.encode()).hexdigest()[:16]
|
|
125
|
+
return [
|
|
126
|
+
Asset(
|
|
127
|
+
id=f"water_level_{station}_{digest}.csv",
|
|
128
|
+
dataset_id=self.dataset.id,
|
|
129
|
+
href=url,
|
|
130
|
+
protocol=Protocol.HTTP,
|
|
131
|
+
media_type="text/csv",
|
|
132
|
+
time=TimeRange(start=start, end=end),
|
|
133
|
+
)
|
|
134
|
+
]
|
|
135
|
+
|
|
136
|
+
def fetch(self, asset: Asset, dest: Path) -> Path:
|
|
137
|
+
"""Download raw CSV, validating the response before replacing the destination."""
|
|
138
|
+
with staged_path(dest) as temporary:
|
|
139
|
+
http.download(asset.href, temporary, self._http())
|
|
140
|
+
_validate_csv(temporary, asset)
|
|
141
|
+
return dest
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"""Annual station summaries through the NCEI Access Data Service.
|
|
2
|
+
|
|
3
|
+
Params: ``stations`` (list or comma string) and ``units`` (metric or standard).
|
|
4
|
+
Both dates are required; every UTC calendar year touched by the interval is
|
|
5
|
+
selected in full. Geographic discovery uses the same normalized year bounds.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from datetime import UTC
|
|
9
|
+
|
|
10
|
+
from usdata.models import Asset, Query, TimeRange
|
|
11
|
+
from usdata.providers.base import QueryError
|
|
12
|
+
from usdata.providers.noaa.ghcnd import GhcnDaily
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class GlobalSummaryYearly(GhcnDaily):
|
|
16
|
+
"""GSOY CSV subsets, reusing NCEI station discovery and HTTP transport."""
|
|
17
|
+
|
|
18
|
+
ncei_dataset = "global-summary-of-the-year"
|
|
19
|
+
|
|
20
|
+
def _yearly_query(self, query: Query) -> Query:
|
|
21
|
+
if query.text is not None:
|
|
22
|
+
raise QueryError(f"{self.dataset.id} does not support text queries")
|
|
23
|
+
if "stations" in query.params and query.bbox is not None:
|
|
24
|
+
raise QueryError("pass stations or a location/bbox, not both")
|
|
25
|
+
if query.time is None or query.time.start is None or query.time.end is None:
|
|
26
|
+
raise QueryError(f"{self.dataset.id} requires both start and end dates")
|
|
27
|
+
start = query.time.start.replace(tzinfo=query.time.start.tzinfo or UTC).astimezone(UTC)
|
|
28
|
+
end = query.time.end.replace(tzinfo=query.time.end.tzinfo or UTC).astimezone(UTC)
|
|
29
|
+
return query.model_copy(
|
|
30
|
+
update={
|
|
31
|
+
"time": TimeRange(
|
|
32
|
+
start=start.replace(month=1, day=1, hour=0, minute=0, second=0, microsecond=0),
|
|
33
|
+
end=end.replace(
|
|
34
|
+
month=12, day=31, hour=23, minute=59, second=59, microsecond=999999
|
|
35
|
+
),
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
def find_stations(self, query: Query) -> list[str]:
|
|
41
|
+
"""Find stations overlapping the selected complete calendar years."""
|
|
42
|
+
return super().find_stations(self._yearly_query(query))
|
|
43
|
+
|
|
44
|
+
def list_assets(self, query: Query) -> list[Asset]:
|
|
45
|
+
"""Resolve annual CSVs with stable URLs and complete-year asset bounds."""
|
|
46
|
+
return super().list_assets(self._yearly_query(query))
|
|
@@ -58,8 +58,9 @@ def open_asset(
|
|
|
58
58
|
Gzip CSVs are decompressed locally without changing cached bytes.
|
|
59
59
|
Infer ``csv`` or ``erddap-csv`` from media type and protocol, or use an
|
|
60
60
|
explicit reader for ambiguous metadata. Identifier columns default to pandas
|
|
61
|
-
strings; explicit dtype entries override those defaults. Dates
|
|
62
|
-
unless named in parse_dates
|
|
61
|
+
strings; explicit dtype entries override those defaults. Dates are not parsed
|
|
62
|
+
unless named in parse_dates; use dtype to preserve numeric-looking date labels
|
|
63
|
+
as strings. No checksum verification or downloading occurs.
|
|
63
64
|
Radar accepts zero-based ``sweep`` indices (one integer or a non-empty list);
|
|
64
65
|
the default opens the whole volume after checking sweep record alignment.
|
|
65
66
|
"""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|