diff --git a/CHANGELOG.md b/CHANGELOG.md index 29dbedfaa..912e64ff4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +- Add WSDOT highway cameras (Washington State) as a keyless CCTV source pack: + WSDOT's official Travel Center camera layer, with frames registered only on + WSDOT's own image host (partner-hosted cameras such as Oregon DOT and City of + Seattle are skipped). Cameras with a single `CompassDirection`, cardinal or + diagonal, get a high-confidence heading; `BW` (Bothways) cameras use the + shared id-hash fallback at low confidence. By default the 250 cameras nearest + Seattle and Spokane load; `CCTV_WSDOT_MAX_SOURCES` sets the cap and + `CCTV_WSDOT_ENABLED=0` turns the pack off (bassem chagra, #644). + - CCTV cameras whose bearing is a guess now say so. Packs mark bearings derived from a hash of the camera id as `headingConfidence: 'low'`, but nothing read the flag, so roughly 70% of a default catalog rendered like surveyed facings. The HUD @@ -235,6 +244,7 @@ Add feed provenance to analyst/view answers and HUD context while retaining existing response fields and runner ownership (Matt Van Horn, #347). Analyst records for loaded satellites, datacenters and dams, with explicit bounded count/rank coverage (Matt Van Horn, #351). + - New Fire Perimeters layer (Events group): live NIFC WFIGS interagency wildfire incident perimeters as ground-clamped polygons with a containment-colored fire line, refreshed every 5 minutes from the public diff --git a/README.md b/README.md index 88690d52f..39daf9e2d 100644 --- a/README.md +++ b/README.md @@ -279,27 +279,27 @@ _Ask for radio near anywhere and the globe starts broadcasting β€” every station Nineteen layers and map sources. **Seventeen have a keyless path.** Some offer additional capabilities with a provider key. (🟒 no key Β· 🟑 free key Β· πŸ”΄ metered.) -| Layer | What you get | Source | Auth | -| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | --------------------------------------------------------------------------------------------------- | -| πŸ—ΊοΈ **Map Stack** | Esri satellite imagery, Google Photorealistic 3D, OSM, plus additional ion-hosted stacks | Esri / Google / Ion / OSM | 🟒 Esri satellite + OSM Β· 🟑 ion-hosted Google 3D + world terrain Β· πŸ”΄ direct Google + place search | -| ✈️ **Live Flights** | 11,000+ live aircraft + route history | OpenSky + adsb.lol | 🟒 (🟑 optional for more polling credits) | -| πŸŽ–οΈ **Military Flights** | ADS-B military traffic in amber | adsb.lol | 🟒 | -| 🚒 **Live Vessels** | Thousands of ships worldwide | AISStream | 🟑 | -| πŸ›°οΈ **Satellites** | 838-object catalog, color-coded by class with a live legend β€” the **DENSE** chip drops in the whole Starlink shell | CelesTrak | 🟒 | -| 🌍 **Earthquakes** | Global seismic activity, last 24h | USGS | 🟒 | -| πŸš— **Traffic** | Simulated vehicles on OSM roads. With TomTom, live flow speeds drive the simulation and congestion colors below ~8 km; individual vehicle positions are not live observations | TomTom + OSM | 🟒 simulation Β· 🟑 live flow speeds | -| πŸ“Ή **CCTV Mesh** | ~3,600 public cameras projected _into_ the 3D space β€” Austin Β· Texas (TxDOT) Β· California (Caltrans) Β· London (TfL) Β· Ontario (511) Β· Finland (Fintraffic) Β· British Columbia (DriveBC) Β· Estonia (Tallinn, Tarktee) Β· Delaware (DelDOT live video) Β· New South Wales (Live Traffic NSW) Β· Calgary. Positions are published; poses are estimated priors **you calibrate by dragging a gizmo on the camera itself** | City APIs | 🟒 | -| πŸ“· **Mapped ALPR Cameras** | License-plate-reader camera locations tagged by OpenStreetMap contributors, loaded one city-sized view at a time, with **SHOW NEAREST**. Locations and tags only: no plate data, no video | OpenStreetMap (incl. DeFlock mapping) | 🟒 | -| πŸ“» **Radio** | Geolocated world radio with an **analog tuner** β€” drag the needle across up to 750 stations and the globe flies to each broadcaster | Radio Browser / broadcasters | 🟒 | -| 🚌 **Transit** | Live buses, trams, metros, trains and ferries with delayed playback between reports, selected-vehicle trails, and mode-coloured DETECT labels β€” Boston, Austin, Minneapolis, Helsinki, the Netherlands, Norway, South East Queensland | Operator GTFS-Realtime feeds | 🟒 | -| 🚲 **Bikeshare** | Live station availability | GBFS | 🟒 | -| 🧭 **Directions** | Click A and B on the globe for a street-following drive, walk or cycle route draped on the terrain with turn-by-turn steps β€” then FLY the camera along it. No key, no geocoder, no mic | OSRM on FOSSGIS servers (OpenStreetMap) | 🟒 | -| πŸ”₯ **Active Fires** | Live NASA FIRMS detections, trailing 24h | NASA FIRMS | 🟑 | -| πŸš€ **Space Missions** | Rolling 30-day launches with payload, stage, and recovery detail | Launch Library 2 | 🟒 (🟑 optional token raises the allowance) | -| πŸŽ–οΈ **Mapped Installations** | Viewport-bounded military-site context from community mapping β€” incomplete by nature, and labeled that way | OpenStreetMap | 🟒 | -| 🌬️ **Wind** | Animated 10 m forecast wind with an optional speed, temperature or pressure color field and a reading at map center | NOAA GFS / ECMWF IFS | 🟒 | -| 🌦️ **Observed Weather** | Rain radar (contiguous US), Satellite clouds (GOES regional or global infrared, Clouds only or Full image) and Lightning density (Americas and Pacific) on one history timeline | NOAA nowCOAST | 🟒 | -| πŸŒ€ **Cyclones** | Advisory positions, forecast tracks and uncertainty cones for the Atlantic and eastern/central North Pacific | NOAA NHC / CPHC | 🟒 | +| Layer | What you get | Source | Auth | +| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | --------------------------------------------------------------------------------------------------- | +| πŸ—ΊοΈ **Map Stack** | Esri satellite imagery, Google Photorealistic 3D, OSM, plus additional ion-hosted stacks | Esri / Google / Ion / OSM | 🟒 Esri satellite + OSM Β· 🟑 ion-hosted Google 3D + world terrain Β· πŸ”΄ direct Google + place search | +| ✈️ **Live Flights** | 11,000+ live aircraft + route history | OpenSky + adsb.lol | 🟒 (🟑 optional for more polling credits) | +| πŸŽ–οΈ **Military Flights** | ADS-B military traffic in amber | adsb.lol | 🟒 | +| 🚒 **Live Vessels** | Thousands of ships worldwide | AISStream | 🟑 | +| πŸ›°οΈ **Satellites** | 838-object catalog, color-coded by class with a live legend β€” the **DENSE** chip drops in the whole Starlink shell | CelesTrak | 🟒 | +| 🌍 **Earthquakes** | Global seismic activity, last 24h | USGS | 🟒 | +| πŸš— **Traffic** | Simulated vehicles on OSM roads. With TomTom, live flow speeds drive the simulation and congestion colors below ~8 km; individual vehicle positions are not live observations | TomTom + OSM | 🟒 simulation Β· 🟑 live flow speeds | +| πŸ“Ή **CCTV Mesh** | ~3,850 public cameras projected _into_ the 3D space β€” Austin Β· Texas (TxDOT) Β· California (Caltrans) Β· London (TfL) Β· Ontario (511) Β· Finland (Fintraffic) Β· British Columbia (DriveBC) Β· Estonia (Tallinn, Tarktee) Β· Delaware (DelDOT live video) Β· New South Wales (Live Traffic NSW) Β· Calgary Β· Washington (WSDOT). Positions are published; poses are estimated priors **you calibrate by dragging a gizmo on the camera itself** | City APIs | 🟒 | +| πŸ“· **Mapped ALPR Cameras** | License-plate-reader camera locations tagged by OpenStreetMap contributors, loaded one city-sized view at a time, with **SHOW NEAREST**. Locations and tags only: no plate data, no video | OpenStreetMap (incl. DeFlock mapping) | 🟒 | +| πŸ“» **Radio** | Geolocated world radio with an **analog tuner** β€” drag the needle across up to 750 stations and the globe flies to each broadcaster | Radio Browser / broadcasters | 🟒 | +| 🚌 **Transit** | Live buses, trams, metros, trains and ferries with delayed playback between reports, selected-vehicle trails, and mode-coloured DETECT labels β€” Boston, Austin, Minneapolis, Helsinki, the Netherlands, Norway, South East Queensland | Operator GTFS-Realtime feeds | 🟒 | +| 🚲 **Bikeshare** | Live station availability | GBFS | 🟒 | +| 🧭 **Directions** | Click A and B on the globe for a street-following drive, walk or cycle route draped on the terrain with turn-by-turn steps β€” then FLY the camera along it. No key, no geocoder, no mic | OSRM on FOSSGIS servers (OpenStreetMap) | 🟒 | +| πŸ”₯ **Active Fires** | Live NASA FIRMS detections, trailing 24h | NASA FIRMS | 🟑 | +| πŸš€ **Space Missions** | Rolling 30-day launches with payload, stage, and recovery detail | Launch Library 2 | 🟒 (🟑 optional token raises the allowance) | +| πŸŽ–οΈ **Mapped Installations** | Viewport-bounded military-site context from community mapping β€” incomplete by nature, and labeled that way | OpenStreetMap | 🟒 | +| 🌬️ **Wind** | Animated 10 m forecast wind with an optional speed, temperature or pressure color field and a reading at map center | NOAA GFS / ECMWF IFS | 🟒 | +| 🌦️ **Observed Weather** | Rain radar (contiguous US), Satellite clouds (GOES regional or global infrared, Clouds only or Full image) and Lightning density (Americas and Pacific) on one history timeline | NOAA nowCOAST | 🟒 | +| πŸŒ€ **Cyclones** | Advisory positions, forecast tracks and uncertainty cones for the Atlantic and eastern/central North Pacific | NOAA NHC / CPHC | 🟒 | **Weather, keyless.** **Wind** animates 10 m forecast flow from NOAA GFS or ECMWF IFS, with an optional color field and a reading at map center. **Rain radar**, **Satellite clouds** and **Lightning density** are observations on one history timeline in the **WEATHER** panel (step back, **Play**, **Latest**); **Cyclone advisories** draw NHC and CPHC positions, forecast tracks and cones. On Google 3D Tiles the observed layers float above the city as translucent shells, sharpened around your view. diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md index fdb42fc0c..edbd44565 100644 --- a/docs/CURRENT-STATE.md +++ b/docs/CURRENT-STATE.md @@ -2747,27 +2747,27 @@ nearby placeβ€”always use station selection. Unqualified β€œturn on/start the ra requests use Play; a qualified Play-shaped tool call is normalized to Select so its criteria cannot be silently ignored. -| Layer | Source | File | Proxy | Update Interval | -| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | -------------------------------------------------------- | --------------------------------------------------------------------------------- | -| Live Flights ✈️ | OpenSky Network; bounded adsb.lol regional fallback | `src/data/flights.js` | `/api/opensky` (OAuth + fallback) | 30s | -| Military Flights πŸŽ–οΈ | adsb.lol /v2/mil | `src/data/militaryFlights.js` | `/api/adsblol/mil` | 15s | -| Live AIS Vessels 🚒 | AISStream websocket | `src/data/aisLiveVessels.js` | `/api/ais-live` | 60s (+800ms visibility pass) | -| Mapped Installations βŒ– | OpenStreetMap mapped context; on-demand Google Maps Places supplement | `src/data/militaryInstallations.js` | `/api/military-installations`, `/api/google/text-search` | viewport-driven + user search; while unavailable, auto-retry 30 s β†’ 240 s backoff | -| Earthquakes | USGS | `src/data/earthquakes.js` | β€” | 60s | -| Satellites | CelesTrak | `src/data/satellites.js` | `/api/celestrak` | 120s | -| Space Missions (30d) | Launch Library 2 + CelesTrak | `src/data/rocketLaunches.js` | `/api/launches` + `/api/celestrak/active` | 5 min | -| Traffic | OSM Overpass (+ optional TomTom live flow) | `src/data/traffic.js` | `/api/overpass` + `/api/tomtom` | viewport-driven | -| CCTV | Austin + Caltrans (CA) + TfL London + Ontario 511 + Fintraffic (FI) + DriveBC (BC) + TxDOT (TX) + Estonia (Tallinn, Tarktee) + Live Traffic NSW + Open Calgary Open Data + Street View fallback | `src/data/cctv.js` | `/api/cctv` | 10s (active) | -| Radio | Radio Browser (public-domain station directory) | `src/data/radio.js` | `/api/radio/stations`, `/api/radio/click/:uuid` | 45 min directory refresh | -| Transit 🚌 | Operator GTFS-Realtime VehiclePositions (7 keyless regions, `src/data/transitFeeds.js`) | `src/layers/transit/` via `src/app/layers/transit.js` | `/api/transit` | 15s (poll + delayed playback) | -| Bikeshare 🚲 | GBFS (Lyft + BCycle) | `src/data/bikeshare.js` | `/api/gbfs` | 60s | -| Directions 🧭 | OSRM on FOSSGIS servers (OpenStreetMap) | `src/data/directions.js` | `/api/route` (`steps=1`) | on placement / mode change | -| Datacenters β–£ | OSM extract (bundled) | `src/data/localLayers.js` | β€” | static | -| Dams β–° | OpenInfraMap/OSM extract (bundled) | `src/data/localLayers.js` | β€” | static | -| Submarine Cables β—  | TeleGeography public map (bundled) | `src/data/telegeographySubmarineCables.js` | β€” | static | -| FIRMS Active Fires β–² | NASA FIRMS live (VIIRS Γ—3 NRT + MODIS NRT, trailing 24h) | `src/data/firmsHeatmap.js` | `/api/firms` (`FIRMS_MAP_KEY`) | 10 min (proxy TTL 30 min) | -| Wind 🌬 | NOAA GFS 10 m wind (keyless, 0.25Β°β†’1Β° grid; animated particles) | `src/data/wind.js` | `/api/wind` | 1 h (forecast cycle) | -| Fire Perimeters πŸ”₯ | NIFC WFIGS current interagency perimeters (keyless, paged past the 2000-record cap); InciWeb catalog + incident page origin and update time checks for verified incident-page links | `src/layers/perimeters/` via `src/app/layers/perimeters.js` | `/api/fire-perimeters` + `/api/fire-perimeters/inciweb/*` | 5 min (server caches: catalog 1 h; publication 30 min) | +| Layer | Source | File | Proxy | Update Interval | +| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------------------------------- | +| Live Flights ✈️ | OpenSky Network; bounded adsb.lol regional fallback | `src/data/flights.js` | `/api/opensky` (OAuth + fallback) | 30s | +| Military Flights πŸŽ–οΈ | adsb.lol /v2/mil | `src/data/militaryFlights.js` | `/api/adsblol/mil` | 15s | +| Live AIS Vessels 🚒 | AISStream websocket | `src/data/aisLiveVessels.js` | `/api/ais-live` | 60s (+800ms visibility pass) | +| Mapped Installations βŒ– | OpenStreetMap mapped context; on-demand Google Maps Places supplement | `src/data/militaryInstallations.js` | `/api/military-installations`, `/api/google/text-search` | viewport-driven + user search; while unavailable, auto-retry 30 s β†’ 240 s backoff | +| Earthquakes | USGS | `src/data/earthquakes.js` | β€” | 60s | +| Satellites | CelesTrak | `src/data/satellites.js` | `/api/celestrak` | 120s | +| Space Missions (30d) | Launch Library 2 + CelesTrak | `src/data/rocketLaunches.js` | `/api/launches` + `/api/celestrak/active` | 5 min | +| Traffic | OSM Overpass (+ optional TomTom live flow) | `src/data/traffic.js` | `/api/overpass` + `/api/tomtom` | viewport-driven | +| CCTV | Austin + Caltrans (CA) + TfL London + Ontario 511 + Fintraffic (FI) + DriveBC (BC) + TxDOT (TX) + Estonia (Tallinn, Tarktee) + Live Traffic NSW + Open Calgary + WSDOT (WA) Open Data + Street View fallback | `src/data/cctv.js` | `/api/cctv` | 10s (active) | +| Radio | Radio Browser (public-domain station directory) | `src/data/radio.js` | `/api/radio/stations`, `/api/radio/click/:uuid` | 45 min directory refresh | +| Transit 🚌 | Operator GTFS-Realtime VehiclePositions (7 keyless regions, `src/data/transitFeeds.js`) | `src/layers/transit/` via `src/app/layers/transit.js` | `/api/transit` | 15s (poll + delayed playback) | +| Bikeshare 🚲 | GBFS (Lyft + BCycle) | `src/data/bikeshare.js` | `/api/gbfs` | 60s | +| Directions 🧭 | OSRM on FOSSGIS servers (OpenStreetMap) | `src/data/directions.js` | `/api/route` (`steps=1`) | on placement / mode change | +| Datacenters β–£ | OSM extract (bundled) | `src/data/localLayers.js` | β€” | static | +| Dams β–° | OpenInfraMap/OSM extract (bundled) | `src/data/localLayers.js` | β€” | static | +| Submarine Cables β—  | TeleGeography public map (bundled) | `src/data/telegeographySubmarineCables.js` | β€” | static | +| FIRMS Active Fires β–² | NASA FIRMS live (VIIRS Γ—3 NRT + MODIS NRT, trailing 24h) | `src/data/firmsHeatmap.js` | `/api/firms` (`FIRMS_MAP_KEY`) | 10 min (proxy TTL 30 min) | +| Wind 🌬 | NOAA GFS 10 m wind (keyless, 0.25Β°β†’1Β° grid; animated particles) | `src/data/wind.js` | `/api/wind` | 1 h (forecast cycle) | +| Fire Perimeters πŸ”₯ | NIFC WFIGS current interagency perimeters (keyless, paged past the 2000-record cap); InciWeb catalog + incident page origin and update time checks for verified incident-page links | `src/layers/perimeters/` via `src/app/layers/perimeters.js` | `/api/fire-perimeters` + `/api/fire-perimeters/inciweb/*` | 5 min (server caches: catalog 1 h; publication 30 min) | Fire Perimeters uses capped, timed server reads with stale-on-error caching and a per-client limit. Unchanged snapshots retain geometry; link checks cancel on disable or selection change, and the row legend shows reported containment.