尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Track 3 — Public Health & the Built Environment · Rice University Urban Sustainability Hackathon
HeatShield 26 is a geospatial decision-support platform covering Houston inside Loop 610. It finds where event crowds, extreme heat, social and health vulnerability, missing shade and poor cooling access overlap at any of 6 real Houston venues — NRG Stadium, Daikin Park, Toyota Center, Shell Energy Stadium, TDECU Stadium and Rice Stadium. Then it tells planners where cooling hubs, shade, water stations and shuttle changes do the most good before the next mega-event.查看完整 README ↗Track 3 — Public Health & the Built Environment · Rice University Urban Sustainability Hackathon
HeatShield 26 is a geospatial decision-support platform covering Houston inside Loop 610. It finds where event crowds, extreme heat, social and health vulnerability, missing shade and poor cooling access overlap at any of 6 real Houston venues — NRG Stadium, Daikin Park, Toyota Center, Shell Energy Stadium, TDECU Stadium and Rice Stadium. Then it tells planners where cooling hubs, shade, water stations and shuttle changes do the most good before the next mega-event.
Where should Houston invest $1M to protect visitors and residents from extreme heat during its next mega-event?
Live: https://heatshield26.vercel.app · Planner: https://heatshield26.vercel.app/planner
Heat Event Risk = 0.40 × Heat exposure
+ 0.25 × Event crowd exposure
+ 0.20 × Health & social vulnerability
+ 0.10 × Shade deficit
+ 0.05 × Cooling access deficit
× (1 − protective factor from water/misting stations)
It is a decision-support composite, not a medical prediction. Every component is normalized to 0–100, and the weights can be adjusted in the app. Full formulas, heat-model fit statistics, crowd assumptions and limitations are on /methodology.
| Component | Source |
|---|---|
| Heat exposure | H3AT modeled heat index, morning/afternoon/evening (HARC / ForUsTree HTX). 2020 is primary; 2024 fills cells 2020 misses. The two campaigns disagree where they overlap (afternoon r = −0.19), so they are not blended. Gaps are filled by interpolation only where it beats a median fill under spatial cross-validation. |
| Surface temperature, impervious cover | Urban Heat Vulnerability in Texas (Houston tracts): evidence and a tested gap-fill predictor |
| Shade | USFS NLCD Tree Canopy Cover (30 m, latest year) for every cell; ForUsTree 2024 LiDAR canopy shown as evidence where it exists |
| Vulnerability | CDC/ATSDR SVI 2022; CDC PLACES 2025 release (CHD, COPD, diabetes, CKD) |
| Cooling access | City of Houston Cool Centers |
| Crowd routing | METRO light rail stations and lines (H-GAC); 6 venue footprints and their nearby parking lots/garages, by OSM capacity tag or area estimate (© OpenStreetMap contributors) |
| Zone names | City of Houston Super Neighborhoods |
| Venue capacities | NRG Stadium via FIFA; Daikin Park, Toyota Center, Shell Energy Stadium, TDECU Stadium and Rice Stadium via each venue's own published figures |
Costs and intervention effect sizes are scenario assumptions, labeled as such everywhere they appear.
npm install
npm run dev # http://localhost:3000
The processed data ships in public/data/. To rebuild it from the live sources, run the command below. It takes about 20–30 minutes, mostly raster sampling, and caches downloads in data/raw/:
npm run build:data # add -- --refresh to re-download
Optional: copy .env.example to .env.local and set GEMINI_API_KEY to enable Gemini explanations (defaults to gemini-flash-latest, with fallbacks on overload; override with GEMINI_MODEL). Optionally also set GROQ_API_KEY: when Gemini is unavailable, explanations come from Groq (openai/gpt-oss-120b, override with GROQ_MODEL). With neither key, the app serves a template explanation.
scripts/build-data.mjs Node pipeline: ArcGIS REST + ImageServer sampling, CDC CSV/Socrata, Overpass
│ → H3 grid joins, heat calibration + gap model, crowd routing
▼
public/data/cells.json per-cell attributes; per-venue crowd layers & modeled routes (6 venues)
public/data/layers.json per-venue stadium footprint/lots/rideshare zones/routes + city-wide stations, rail lines, cool centers
│
src/lib/model.ts scoring, intervention modifiers, summary metrics (pure TS)
src/lib/optimizer.ts greedy budget allocation + priority ranking
src/components/planner/ MapLibre map, scenario/zone/simulate/optimize/priorities panels
src/app/api/explain Gemini rationale → Groq fallback → deterministic template
No database: the static JSON totals ~1 MB and every computation runs client-side. One evaluation of all cells takes ~3 ms and a $1M optimizer run ~100 ms, so sliders, placed interventions and optimizer runs update instantly.
npx tsx scripts/check-model.ts # headless sanity check: distributions, top cells, optimizer consistency
node scripts/screenshots.mjs # captures docs/screenshots/*.png from a running dev server (local Chrome)
MapLibre GL 6 loads its web worker relative to its own module URL, which doesn't survive bundling. scripts/copy-maplibre-worker.mjs runs before dev and build to serve the worker from public/maplibre/.
docs/screenshots/ has the landing page, the baseline risk map, zone detail, the 3D view, the optimized $1M plan, and the crowd layer with modeled routes.