Remove invalid SPC URLs for day 3 tornado/wind/hail risk
Some checks failed
ci/woodpecker/push/build-image Pipeline failed

This commit is contained in:
2026-06-10 21:56:11 -05:00
parent f8f1b8d4a5
commit 5d94d3f32d
7 changed files with 16 additions and 22 deletions

View File

@@ -147,7 +147,7 @@ URL omits it or sets another unit system.
## SPC Convective Outlook Params
`spc_convective_outlook` fetches the twelve required Day 1-3 GeoJSON outlook
`spc_convective_outlook` fetches the nine required Day 1-3 GeoJSON outlook
products and the three required Day 1-3 print pages as one atomic bundle.
| Param | Required | Description |
@@ -165,8 +165,8 @@ products and the three required Day 1-3 print pages as one atomic bundle.
GeoJSON product keys are `day1_categorical`, `day1_tornado`, `day1_hail`,
`day1_wind`, `day2_categorical`, `day2_tornado`, `day2_hail`, `day2_wind`,
`day3_categorical`, `day3_tornado`, `day3_hail`, and `day3_wind`.
Discussion keys are `day1`, `day2`, and `day3`.
and `day3_categorical`. SPC does not provide Day 3 tornado, hail, or wind
GeoJSON products. Discussion keys are `day1`, `day2`, and `day3`.
```yaml
sources:

View File

@@ -39,11 +39,11 @@ current Day 1-3 SPC product URLs.
## Upstream Products Used
The source fetches twelve required GeoJSON products every poll:
The source fetches nine required GeoJSON products every poll:
- Day 1 categorical, tornado, hail, and wind
- Day 2 categorical, tornado, hail, and wind
- Day 3 categorical, tornado, hail, and wind
- Day 3 categorical
It also fetches three required print pages:

View File

@@ -56,8 +56,8 @@ func TestConvectiveOutlookNormalizerProducesCanonicalSchemaAndMapsSample(t *test
if run.Latitude == nil || *run.Latitude != 38.5 || run.Longitude == nil || *run.Longitude != -90.5 {
t.Fatalf("coordinates = %v,%v", run.Latitude, run.Longitude)
}
if len(run.Outlooks) != 12 {
t.Fatalf("Outlooks length = %d, want 12", len(run.Outlooks))
if len(run.Outlooks) != 9 {
t.Fatalf("Outlooks length = %d, want 9", len(run.Outlooks))
}
got := run.Outlooks[0]
@@ -322,7 +322,7 @@ func geoJSONFixtureForProduct(t *testing.T, key string) []byte {
case strings.HasPrefix(key, "day2_"):
return readSPCTestFixture(t, "day2_torn.geojson")
case strings.HasPrefix(key, "day3_"):
return readSPCTestFixture(t, "day3_wind.geojson")
return readSPCTestFixture(t, "day3_cat.geojson")
default:
t.Fatalf("unknown product key %q", key)
return nil

View File

@@ -34,9 +34,6 @@ var geoJSONProducts = []GeoJSONProduct{
{Key: "day2_hail", Day: 2, OutlookType: OutlookTypeHail, URL: "https://www.spc.noaa.gov/products/outlook/day2otlk_hail.nolyr.geojson"},
{Key: "day2_wind", Day: 2, OutlookType: OutlookTypeWind, URL: "https://www.spc.noaa.gov/products/outlook/day2otlk_wind.nolyr.geojson"},
{Key: "day3_categorical", Day: 3, OutlookType: OutlookTypeCategorical, URL: "https://www.spc.noaa.gov/products/outlook/day3otlk_cat.nolyr.geojson"},
{Key: "day3_tornado", Day: 3, OutlookType: OutlookTypeTornado, URL: "https://www.spc.noaa.gov/products/outlook/day3otlk_torn.nolyr.geojson"},
{Key: "day3_hail", Day: 3, OutlookType: OutlookTypeHail, URL: "https://www.spc.noaa.gov/products/outlook/day3otlk_hail.nolyr.geojson"},
{Key: "day3_wind", Day: 3, OutlookType: OutlookTypeWind, URL: "https://www.spc.noaa.gov/products/outlook/day3otlk_wind.nolyr.geojson"},
}
var discussionProducts = []DiscussionProduct{

View File

@@ -4,8 +4,8 @@ import "testing"
func TestGeoJSONProductsStableOrder(t *testing.T) {
got := GeoJSONProducts()
if len(got) != 12 {
t.Fatalf("GeoJSONProducts() length = %d, want 12", len(got))
if len(got) != 9 {
t.Fatalf("GeoJSONProducts() length = %d, want 9", len(got))
}
wantKeys := []string{
@@ -18,9 +18,6 @@ func TestGeoJSONProductsStableOrder(t *testing.T) {
"day2_hail",
"day2_wind",
"day3_categorical",
"day3_tornado",
"day3_hail",
"day3_wind",
}
for i, want := range wantKeys {
if got[i].Key != want {

View File

@@ -8,9 +8,9 @@
"EXPIRE_ISO": "2026-06-14T12:00:00Z",
"ISSUE_ISO": "2026-06-11T19:45:00Z",
"FORECASTER": "LEE",
"LABEL": "15",
"LABEL2": "15% Wind",
"DN": 15
"LABEL": "MRGL",
"LABEL2": "Marginal Risk",
"DN": 2
},
"geometry": {
"type": "MultiPolygon",

View File

@@ -78,8 +78,8 @@ func TestConvectiveOutlookSourcePollEmitsRawBundle(t *testing.T) {
if bundle.Latitude != 38.6239 || bundle.Longitude != -90.3571 {
t.Fatalf("coordinates = %v,%v", bundle.Latitude, bundle.Longitude)
}
if len(bundle.Products) != 12 {
t.Fatalf("Products length = %d, want 12", len(bundle.Products))
if len(bundle.Products) != 9 {
t.Fatalf("Products length = %d, want 9", len(bundle.Products))
}
if len(bundle.Discussions) != 3 {
t.Fatalf("Discussions length = %d, want 3", len(bundle.Discussions))
@@ -312,7 +312,7 @@ func geoJSONFixtureForProduct(t *testing.T, key string, blankIssueISO bool) []by
case strings.HasPrefix(key, "day2_"):
name = "day2_torn.geojson"
case strings.HasPrefix(key, "day3_"):
name = "day3_wind.geojson"
name = "day3_cat.geojson"
default:
t.Fatalf("unknown product key %q", key)
}