hermes-explorigin 32f749444e Add NWS (National Weather Service) as a selectable data source preference
- New Settings > Data source toggle (Open-Meteo global / NWS US); NWS
  falls back to Open-Meteo when unavailable or outside its coverage.
- src/lib/api/nws.js: /points -> forecast/hourly/grid normalizer producing
  the app's shared shape, with realistic air highs (NWS reports 104 for the
  day Open-Meteo over-forecasts at 116); heat-index/feels-like falls back to
  air temp since NWS returns apparentTemperature as null here.
- NWS requires a User-Agent contact; email is a build-time Vite env
  (VITE_NWS_EMAIL), read from gitignored .env.local, never committed.
- Details view now shows which provider served the data.
- Fixes the identical UTC date-parse shift for NWS naive local times.
- Tests (8) + recorded live fixtures for Rogers County, OK.
2026-08-16 20:14:07 +00:00

319 lines
13 KiB
JSON

{
"@context": [
"https://geojson.org/geojson-ld/geojson-context.jsonld",
{
"@version": "1.1",
"wx": "https://api.weather.gov/ontology#",
"geo": "http://www.opengis.net/ont/geosparql#",
"unit": "http://codes.wmo.int/common/unit/",
"@vocab": "https://api.weather.gov/ontology#"
}
],
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-95.7922,
36.3555
],
[
-95.7924,
36.3779
],
[
-95.8201,
36.3778
],
[
-95.82,
36.3554
],
[
-95.7922,
36.3555
]
]
]
},
"properties": {
"units": "us",
"forecastGenerator": "BaselineForecastGenerator",
"generatedAt": "2026-08-16T20:09:21+00:00",
"updateTime": "2026-08-16T19:50:51+00:00",
"validTimes": "2026-08-16T17:00:00+00:00/P7DT8H",
"elevation": {
"unitCode": "wmoUnit:m",
"value": 196.9008
},
"periods": [
{
"number": 1,
"name": "This Afternoon",
"startTime": "2026-08-16T15:00:00-05:00",
"endTime": "2026-08-16T18:00:00-05:00",
"isDaytime": true,
"temperature": 103,
"temperatureUnit": "F",
"temperatureTrend": null,
"probabilityOfPrecipitation": {
"unitCode": "wmoUnit:percent",
"value": 17
},
"windSpeed": "10 mph",
"windDirection": "W",
"icon": "https://api.weather.gov/icons/land/day/tsra_hi,20?size=medium",
"shortForecast": "Slight Chance Showers And Thunderstorms",
"detailedForecast": "A slight chance of showers and thunderstorms after 4pm. Mostly sunny, with a high near 103. Heat index values as high as 112. West wind around 10 mph. Chance of precipitation is 20%."
},
{
"number": 2,
"name": "Tonight",
"startTime": "2026-08-16T18:00:00-05:00",
"endTime": "2026-08-17T06:00:00-05:00",
"isDaytime": false,
"temperature": 75,
"temperatureUnit": "F",
"temperatureTrend": null,
"probabilityOfPrecipitation": {
"unitCode": "wmoUnit:percent",
"value": 24
},
"windSpeed": "5 mph",
"windDirection": "N",
"icon": "https://api.weather.gov/icons/land/night/tsra_hi,20?size=medium",
"shortForecast": "Slight Chance Showers And Thunderstorms",
"detailedForecast": "A slight chance of showers and thunderstorms. Partly cloudy, with a low around 75. Heat index values as high as 110. North wind around 5 mph. Chance of precipitation is 20%. New rainfall amounts less than a tenth of an inch possible."
},
{
"number": 3,
"name": "Monday",
"startTime": "2026-08-17T06:00:00-05:00",
"endTime": "2026-08-17T18:00:00-05:00",
"isDaytime": true,
"temperature": 94,
"temperatureUnit": "F",
"temperatureTrend": null,
"probabilityOfPrecipitation": {
"unitCode": "wmoUnit:percent",
"value": 24
},
"windSpeed": "5 to 10 mph",
"windDirection": "N",
"icon": "https://api.weather.gov/icons/land/day/tsra_hi,20?size=medium",
"shortForecast": "Slight Chance Showers And Thunderstorms",
"detailedForecast": "A slight chance of showers and thunderstorms. Mostly sunny, with a high near 94. Heat index values as high as 105. North wind 5 to 10 mph. Chance of precipitation is 20%. New rainfall amounts less than a tenth of an inch possible."
},
{
"number": 4,
"name": "Monday Night",
"startTime": "2026-08-17T18:00:00-05:00",
"endTime": "2026-08-18T06:00:00-05:00",
"isDaytime": false,
"temperature": 73,
"temperatureUnit": "F",
"temperatureTrend": null,
"probabilityOfPrecipitation": {
"unitCode": "wmoUnit:percent",
"value": 16
},
"windSpeed": "0 to 5 mph",
"windDirection": "NE",
"icon": "https://api.weather.gov/icons/land/night/tsra_hi,20/few?size=medium",
"shortForecast": "Slight Chance Showers And Thunderstorms then Mostly Clear",
"detailedForecast": "A slight chance of showers and thunderstorms before 7pm. Mostly clear, with a low around 73. Heat index values as high as 103. Northeast wind 0 to 5 mph. Chance of precipitation is 20%."
},
{
"number": 5,
"name": "Tuesday",
"startTime": "2026-08-18T06:00:00-05:00",
"endTime": "2026-08-18T18:00:00-05:00",
"isDaytime": true,
"temperature": 101,
"temperatureUnit": "F",
"temperatureTrend": null,
"probabilityOfPrecipitation": {
"unitCode": "wmoUnit:percent",
"value": 11
},
"windSpeed": "0 to 5 mph",
"windDirection": "SE",
"icon": "https://api.weather.gov/icons/land/day/hot?size=medium",
"shortForecast": "Sunny",
"detailedForecast": "Sunny, with a high near 101. Southeast wind 0 to 5 mph."
},
{
"number": 6,
"name": "Tuesday Night",
"startTime": "2026-08-18T18:00:00-05:00",
"endTime": "2026-08-19T06:00:00-05:00",
"isDaytime": false,
"temperature": 79,
"temperatureUnit": "F",
"temperatureTrend": null,
"probabilityOfPrecipitation": {
"unitCode": "wmoUnit:percent",
"value": 1
},
"windSpeed": "5 to 10 mph",
"windDirection": "S",
"icon": "https://api.weather.gov/icons/land/night/few?size=medium",
"shortForecast": "Mostly Clear",
"detailedForecast": "Mostly clear, with a low around 79. South wind 5 to 10 mph."
},
{
"number": 7,
"name": "Wednesday",
"startTime": "2026-08-19T06:00:00-05:00",
"endTime": "2026-08-19T18:00:00-05:00",
"isDaytime": true,
"temperature": 104,
"temperatureUnit": "F",
"temperatureTrend": null,
"probabilityOfPrecipitation": {
"unitCode": "wmoUnit:percent",
"value": 1
},
"windSpeed": "10 mph",
"windDirection": "SW",
"icon": "https://api.weather.gov/icons/land/day/hot?size=medium",
"shortForecast": "Sunny",
"detailedForecast": "Sunny, with a high near 104. Southwest wind around 10 mph."
},
{
"number": 8,
"name": "Wednesday Night",
"startTime": "2026-08-19T18:00:00-05:00",
"endTime": "2026-08-20T06:00:00-05:00",
"isDaytime": false,
"temperature": 76,
"temperatureUnit": "F",
"temperatureTrend": null,
"probabilityOfPrecipitation": {
"unitCode": "wmoUnit:percent",
"value": 12
},
"windSpeed": "10 to 15 mph",
"windDirection": "S",
"icon": "https://api.weather.gov/icons/land/night/few?size=medium",
"shortForecast": "Mostly Clear",
"detailedForecast": "Mostly clear, with a low around 76. South wind 10 to 15 mph, with gusts as high as 20 mph."
},
{
"number": 9,
"name": "Thursday",
"startTime": "2026-08-20T06:00:00-05:00",
"endTime": "2026-08-20T18:00:00-05:00",
"isDaytime": true,
"temperature": 98,
"temperatureUnit": "F",
"temperatureTrend": null,
"probabilityOfPrecipitation": {
"unitCode": "wmoUnit:percent",
"value": 12
},
"windSpeed": "5 to 10 mph",
"windDirection": "NE",
"icon": "https://api.weather.gov/icons/land/day/sct?size=medium",
"shortForecast": "Mostly Sunny",
"detailedForecast": "Mostly sunny, with a high near 98. Northeast wind 5 to 10 mph."
},
{
"number": 10,
"name": "Thursday Night",
"startTime": "2026-08-20T18:00:00-05:00",
"endTime": "2026-08-21T06:00:00-05:00",
"isDaytime": false,
"temperature": 72,
"temperatureUnit": "F",
"temperatureTrend": null,
"probabilityOfPrecipitation": {
"unitCode": "wmoUnit:percent",
"value": 7
},
"windSpeed": "5 to 10 mph",
"windDirection": "NE",
"icon": "https://api.weather.gov/icons/land/night/few?size=medium",
"shortForecast": "Mostly Clear",
"detailedForecast": "Mostly clear, with a low around 72. Northeast wind 5 to 10 mph."
},
{
"number": 11,
"name": "Friday",
"startTime": "2026-08-21T06:00:00-05:00",
"endTime": "2026-08-21T18:00:00-05:00",
"isDaytime": true,
"temperature": 97,
"temperatureUnit": "F",
"temperatureTrend": null,
"probabilityOfPrecipitation": {
"unitCode": "wmoUnit:percent",
"value": 7
},
"windSpeed": "5 mph",
"windDirection": "NE",
"icon": "https://api.weather.gov/icons/land/day/few?size=medium",
"shortForecast": "Sunny",
"detailedForecast": "Sunny, with a high near 97. Northeast wind around 5 mph."
},
{
"number": 12,
"name": "Friday Night",
"startTime": "2026-08-21T18:00:00-05:00",
"endTime": "2026-08-22T06:00:00-05:00",
"isDaytime": false,
"temperature": 72,
"temperatureUnit": "F",
"temperatureTrend": null,
"probabilityOfPrecipitation": {
"unitCode": "wmoUnit:percent",
"value": 3
},
"windSpeed": "5 to 10 mph",
"windDirection": "NE",
"icon": "https://api.weather.gov/icons/land/night/few?size=medium",
"shortForecast": "Mostly Clear",
"detailedForecast": "Mostly clear, with a low around 72. Northeast wind 5 to 10 mph."
},
{
"number": 13,
"name": "Saturday",
"startTime": "2026-08-22T06:00:00-05:00",
"endTime": "2026-08-22T18:00:00-05:00",
"isDaytime": true,
"temperature": 99,
"temperatureUnit": "F",
"temperatureTrend": null,
"probabilityOfPrecipitation": {
"unitCode": "wmoUnit:percent",
"value": 4
},
"windSpeed": "5 mph",
"windDirection": "E",
"icon": "https://api.weather.gov/icons/land/day/few?size=medium",
"shortForecast": "Sunny",
"detailedForecast": "Sunny, with a high near 99. East wind around 5 mph."
},
{
"number": 14,
"name": "Saturday Night",
"startTime": "2026-08-22T18:00:00-05:00",
"endTime": "2026-08-23T06:00:00-05:00",
"isDaytime": false,
"temperature": 73,
"temperatureUnit": "F",
"temperatureTrend": null,
"probabilityOfPrecipitation": {
"unitCode": "wmoUnit:percent",
"value": 5
},
"windSpeed": "5 to 10 mph",
"windDirection": "E",
"icon": "https://api.weather.gov/icons/land/night/few?size=medium",
"shortForecast": "Mostly Clear",
"detailedForecast": "Mostly clear, with a low around 73. East wind 5 to 10 mph."
}
]
}
}