Fire & Road Conditions Drive Board: a worst-first, one-glance CLEAR / CAUTION / AVOID verdict for driving from Pendleton to nearby towns, from live fire perimeters, satellite hotspots, and real ODOT r
翻譯準備中
生活風格JavaScript · CSSGitHub @lperezmo上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Keyless wildfire situational awareness for the western US: live fire perimeters, terrain, fuel, and wind, with a client-side spread-risk and escape line-of-sight analysis.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Wildfire situational awareness and driving decisions for eastern Oregon. The app opens to a Drive Board centered on Pendleton: a map plus a worst-first list of nearby destination towns, each with a one-glance CLEAR / CAUTION / AVOID verdict for driving there, based on active fire near the route and real ODOT road incidents. From any corridor you can drop into the original Inspect this ground tool: draw a box on the map and the app pulls real elevation, satellite imagery, and a vegetation fuel layer for that ground, overlays live interagency fire perimeters and recent satellite hotspots, reads the current wind, and runs a client-side analysis (a spread-risk model over the area and a line-of-sight pass that ranks safe staging spots, fire-watch lookouts, or the highest-risk cells, each explained in plain English, with a 3D view of the terrain).
On load you see, leaving Pendleton:
How a verdict is decided (each route is sampled along its baked driving polyline):
Honesty rules: verdicts are phrased as "fire near route" and show the actual incident text; the app never claims a road is open. If live data fails to load a route shows CAUTION, never a false CLEAR. A permanent caveat reads: incidents are ODOT-reported on Oregon state highways, confirm on TripCheck, and Washington roads are not included yet. The Walla Walla leg crosses into Washington and uses Oregon-side ODOT plus fire proximity only, with an inline note.
Data sources for the Drive Board (all keyless): NIFC/WFIGS fire perimeters and
VIIRS hotspots through the /api/fires proxy on a wide regional bbox; ODOT
Traffic Incidents fetched directly in the browser (CORS-open); NWS active alerts
for a Red Flag Warning or Fire Weather Watch banner; Open-Meteo wind. Driving
routes are baked from the OSRM demo server once at build time and committed, so
there is no runtime dependency on that server (a missing route falls back to a
straight line).
The regional path runs entirely on the main thread with plain GeoJSON and arithmetic; the heavy terrain and viewshed pipeline only spins up when you inspect a specific area.
No API keys. Everything runs on free, keyless public data:
You draw the ground. Search to a location, then drag a rectangle over the area you want to assess (soft cap about 60 sq km).
The app builds the parcel. A Web Worker fetches elevation and imagery tiles, decodes a metric heightmap, and classifies a vegetation fuel density mask (slope-suppressed so bare cliffs do not read as fuel).
It pulls live fire data. Current interagency perimeters and recent VIIRS hotspots in and around the area come through the serverless proxy; the nearest active fire distance is computed for the area.
It reads the wind. Current wind speed and direction at the area center come from Open-Meteo and feed both the display and the spread model.
It models spread risk. For every cell the app blends three transparent factors:
| Factor | What raises risk |
|---|---|
| Fuel | Denser canopy/vegetation carries fire faster |
| Slope | Fire spreads faster uphill, so upslope cells are riskier |
| Wind | Cells downwind of higher fuel and of active fire are riskier |
Cells on or next to an active perimeter or hotspot are treated as maximum risk, and the risk decays with distance from active fire.
It ranks spots. Depending on your goal it casts line-of-sight from a grid of candidate positions (eye at ground plus your chosen height, terrain plus tall fuel as the occluder) and blends the factors below:
Each result gets a 55 to 99 rating, a plain-English reason, the visible fire-prone acreage, and the distance to the nearest active fire.
You explore. Toggle the spread-risk heatmap and the fire overlay, open any spot in a 3D terrain view with the risk tint, its line-of-sight footprint, and a wind arrow, and export the ranked spots as GPX or KML.
Deep links: the Drive Board accepts ?city=pendleton (the default hub) and
?to=<town id> to preselect a corridor (for example ?to=lagrande). Any inspect
area works through the shareable box link, for example
?bbox=-118.6,45.2,-118.0,45.6, which opens straight into the terrain analysis as
before.
A small toggle at the top-right of the map switches the basemap between
Satellite (Esri World Imagery, the default) and Street (Esri World
Topographic, which carries street and topo detail you can zoom into). Both are
keyless Esri raster tiles. On the satellite basemap a keyless Esri reference
overlay adds place and road labels so it is not label-less. The choice is saved
to localStorage. Switching only swaps the basemap source tiles, so the fire,
route, town, and draw-box overlays are untouched and the draw-a-box analysis
keeps working on either basemap.
Each destination town and the Pendleton hub carry a name label beside their marker, with a dark halo so they stay readable on the bright satellite imagery. The verdict color stays on the dot; the label text is neutral so the two never clash.
The Walla Walla leg crosses into Washington, where ODOT data does not apply.
When a free WSDOT access code is configured (see the env var below) the app pulls
WSDOT HighwayAlerts for the Walla Walla / US-12 corridor through the
/api/wa-alerts serverless proxy and folds them into that leg's verdict exactly
like ODOT incidents: a closure or wildfire forces AVOID, any other alert is
CAUTION. The proxy is env-gated and graceful: with no key set it returns
{ "configured": false, "alerts": [] } (HTTP 200, never 500) and the app keeps
its honest "Washington roads are not included yet" note; if WSDOT is down it
degrades to the same note rather than crashing. The access code never reaches the
browser; it is read server-side from the env var.
| Variable | Required | Purpose |
|---|---|---|
WSDOT_ACCESS_CODE | No | Free WSDOT Traveler Information API access code. When set, the /api/wa-alerts proxy pulls Washington HighwayAlerts for the Walla Walla corridor and the Walla Walla leg reflects WSDOT closures. When unset, the app degrades gracefully to the honest "Washington roads not included yet" note. Set it in the Vercel project environment (and in a local .env, copied from .env.example, for dev). Request a free code at https://wsdot.wa.gov/traffic/api/ |
bun install
bun run dev # http://localhost:5173, serverless proxies mirrored as dev middleware
bun run build # production build into dist/
bun run preview # serve the production build
bun run check # bun fmt --check, bun lint and the build
Bun 1.4 or newer. Vite is still the dev server and bundler; the scripts run it on
the Bun runtime, which also loads .env into process.env for the dev proxies.
bun fmt ships in Bun 1.4.4, but bun lint only exists on Bun canary for now
(bun upgrade --canary), so CI runs both on canary and keeps the build job on the
pinned Bun release. The /api/tiles, /api/fires, and /api/wa-alerts routes run
as Vercel serverless functions in production and as Vite dev middleware locally,
so the app behaves identically in both. To exercise the Washington alerts path in
dev, copy .env.example to .env and set WSDOT_ACCESS_CODE; without it the WA
leg shows the honest "not included yet" note.
Fire perimeters and hotspots reflect the public NIFC feeds and can lag real conditions; perimeters are mapped periodically and hotspots are satellite passes, not a continuous watch. The spread model is a transparent terrain, fuel, and wind heuristic for situational awareness, not a calibrated fire-behavior forecast. Fuel is inferred from imagery, not a ground survey.
This tool is for awareness and planning only. It is not a fire forecast, an evacuation order, or a substitute for official guidance. In a real fire, follow InciWeb, local authorities, and emergency services.