mirror of
https://github.com/netbymatt/ws4kp.git
synced 2026-04-14 15:49:31 -07:00
Allow for station data overrides #125
This commit is contained in:
File diff suppressed because it is too large
Load Diff
19
datagenerators/stations-overrides.mjs
Normal file
19
datagenerators/stations-overrides.mjs
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
// station overrides are used to change the data for a station that is provided by the api
|
||||||
|
// the most common use is to adjust the city (station name) for formatting or to update an outdated name
|
||||||
|
// a complete station object looks like this:
|
||||||
|
// {
|
||||||
|
// "id": "KMCO", // 4-letter station identifier and key for lookups
|
||||||
|
// "city": "Orlando International Airport", // name displayed for this station
|
||||||
|
// "state": "FL", // state
|
||||||
|
// "lat": 28.41826, // latitude of station
|
||||||
|
// "lon": -81.32413 // longitude of station
|
||||||
|
// }
|
||||||
|
// any or all of the data for a station can be overwritten, follow the existing override patterns below
|
||||||
|
|
||||||
|
const overrides = {
|
||||||
|
KBJC: {
|
||||||
|
city: 'Rocky Mountain Metro',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default overrides;
|
||||||
@@ -5,6 +5,7 @@ import { writeFileSync } from 'fs';
|
|||||||
import https from './https.mjs';
|
import https from './https.mjs';
|
||||||
import states from './stations-states.mjs';
|
import states from './stations-states.mjs';
|
||||||
import chunk from './chunk.mjs';
|
import chunk from './chunk.mjs';
|
||||||
|
import overrides from './stations-overrides.mjs';
|
||||||
|
|
||||||
// skip stations starting with these letters
|
// skip stations starting with these letters
|
||||||
const skipStations = ['U', 'C', 'H', 'W', 'Y', 'T', 'S', 'M', 'O', 'L', 'A', 'F', 'B', 'N', 'V', 'R', 'D', 'E', 'I', 'G', 'J'];
|
const skipStations = ['U', 'C', 'H', 'W', 'Y', 'T', 'S', 'M', 'O', 'L', 'A', 'F', 'B', 'N', 'V', 'R', 'D', 'E', 'I', 'G', 'J'];
|
||||||
@@ -43,12 +44,16 @@ for (let i = 0; i < chunkStates.length; i += 1) {
|
|||||||
console.log(`Duplicate station: ${state}-${id}`);
|
console.log(`Duplicate station: ${state}-${id}`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// get any overrides if available
|
||||||
|
const override = overrides[id] ?? {};
|
||||||
output[id] = {
|
output[id] = {
|
||||||
id,
|
id,
|
||||||
city: station.properties.name,
|
city: station.properties.name,
|
||||||
state,
|
state,
|
||||||
lat: station.geometry.coordinates[1],
|
lat: station.geometry.coordinates[1],
|
||||||
lon: station.geometry.coordinates[0],
|
lon: station.geometry.coordinates[0],
|
||||||
|
// finally add the overrides
|
||||||
|
...override,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
next = stations?.pagination?.next;
|
next = stations?.pagination?.next;
|
||||||
@@ -59,7 +64,7 @@ for (let i = 0; i < chunkStates.length; i += 1) {
|
|||||||
while (next && stations.features.length > 0);
|
while (next && stations.features.length > 0);
|
||||||
console.log(`Complete: ${state}`);
|
console.log(`Complete: ${state}`);
|
||||||
return true;
|
return true;
|
||||||
} catch (e) {
|
} catch {
|
||||||
console.error(`Unable to get state: ${state}`);
|
console.error(`Unable to get state: ${state}`);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13350,6 +13350,13 @@ const StationInfo = {
|
|||||||
lat: 38.7578,
|
lat: 38.7578,
|
||||||
lon: -104.3013,
|
lon: -104.3013,
|
||||||
},
|
},
|
||||||
|
KAEJ: {
|
||||||
|
id: 'KAEJ',
|
||||||
|
city: 'Central Colorado Regional Airport',
|
||||||
|
state: 'CO',
|
||||||
|
lat: 38.81416,
|
||||||
|
lon: -106.12069,
|
||||||
|
},
|
||||||
KAFF: {
|
KAFF: {
|
||||||
id: 'KAFF',
|
id: 'KAFF',
|
||||||
city: 'Air Force Academy',
|
city: 'Air Force Academy',
|
||||||
@@ -13357,13 +13364,6 @@ const StationInfo = {
|
|||||||
lat: 38.96667,
|
lat: 38.96667,
|
||||||
lon: -104.81667,
|
lon: -104.81667,
|
||||||
},
|
},
|
||||||
KAIB: {
|
|
||||||
id: 'KAIB',
|
|
||||||
city: 'Nucla Hopkins Field Airport',
|
|
||||||
state: 'CO',
|
|
||||||
lat: 38.23875,
|
|
||||||
lon: -108.563277,
|
|
||||||
},
|
|
||||||
KAJZ: {
|
KAJZ: {
|
||||||
id: 'KAJZ',
|
id: 'KAJZ',
|
||||||
city: 'Delta/Blake Field Airport',
|
city: 'Delta/Blake Field Airport',
|
||||||
@@ -13415,7 +13415,7 @@ const StationInfo = {
|
|||||||
},
|
},
|
||||||
KBJC: {
|
KBJC: {
|
||||||
id: 'KBJC',
|
id: 'KBJC',
|
||||||
city: 'Broomfield / Jeffco',
|
city: 'Rocky Mountain Metro',
|
||||||
state: 'CO',
|
state: 'CO',
|
||||||
lat: 39.90085,
|
lat: 39.90085,
|
||||||
lon: -105.10417,
|
lon: -105.10417,
|
||||||
|
|||||||
@@ -114,11 +114,14 @@ class CurrentWeather extends WeatherDisplay {
|
|||||||
|
|
||||||
const wind = (typeof this.data.WindSpeed === 'number') ? this.data.WindDirection.padEnd(3, '') + this.data.WindSpeed.toString().padStart(3, ' ') : this.data.WindSpeed;
|
const wind = (typeof this.data.WindSpeed === 'number') ? this.data.WindDirection.padEnd(3, '') + this.data.WindSpeed.toString().padStart(3, ' ') : this.data.WindSpeed;
|
||||||
|
|
||||||
|
// get location (city name) from StationInfo if available (allows for overrides)
|
||||||
|
const location = (StationInfo[this.data.station.properties.stationIdentifier]?.city ?? locationCleanup(this.data.station.properties.name)).substr(0, 20);
|
||||||
|
|
||||||
const fill = {
|
const fill = {
|
||||||
temp: this.data.Temperature + String.fromCharCode(176),
|
temp: this.data.Temperature + String.fromCharCode(176),
|
||||||
condition,
|
condition,
|
||||||
wind,
|
wind,
|
||||||
location: locationCleanup(this.data.station.properties.name).substr(0, 20),
|
location,
|
||||||
humidity: `${this.data.Humidity}%`,
|
humidity: `${this.data.Humidity}%`,
|
||||||
dewpoint: this.data.DewPoint + String.fromCharCode(176),
|
dewpoint: this.data.DewPoint + String.fromCharCode(176),
|
||||||
ceiling: (this.data.Ceiling === 0 ? 'Unlimited' : this.data.Ceiling + this.data.CeilingUnit),
|
ceiling: (this.data.Ceiling === 0 ? 'Unlimited' : this.data.Ceiling + this.data.CeilingUnit),
|
||||||
|
|||||||
@@ -133,7 +133,10 @@ const baseScreens = [
|
|||||||
// hazards
|
// hazards
|
||||||
hazards,
|
hazards,
|
||||||
// station name
|
// station name
|
||||||
(data) => `Conditions at ${locationCleanup(data.station.properties.name).substr(0, 20)}`,
|
(data) => {
|
||||||
|
const location = (StationInfo[data.station.properties.stationIdentifier]?.city ?? locationCleanup(data.station.properties.name)).substr(0, 20);
|
||||||
|
return `Conditions at ${location}`;
|
||||||
|
},
|
||||||
|
|
||||||
// temperature
|
// temperature
|
||||||
(data) => {
|
(data) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user