πΊοΈ TransmissionRisk Mapper
A clean, focused web application for transmission line risk assessment using real FEMA National Risk Index (NRI) data.
β¨ Features
- Real FEMA NRI Data Integration: Uses actual government hazard risk data for 3,231+ counties
- County Risk Lookup: Get detailed risk assessments for any US county
- Transmission Line Risk Assessment: Calculate combined risk between two locations
- Interactive Map: Leaflet.js-powered mapping interface
- Clean API: RESTful endpoints for all functionality
- Modern UI: Responsive design with real-time data visualization
π Quick Start
Prerequisites
- Python 3.8+
- Virtual environment (recommended)
- FEMA NRI data files (included in
data/directory)
Installation
Activate virtual environment:
source venv/bin/activateInstall dependencies:
pip install -r requirements.txtStart the application:
python app.pyOpen your browser:
http://localhost:8000
π Data Sources
FEMA National Risk Index (NRI)
- Source:
data/NRI_Table_Counties/NRI_Table_Counties.csv - Coverage: 3,231 US counties and territories
- Metrics: Risk scores, social vulnerability, community resilience
- Hazards: Hurricane, tornado, earthquake, wildfire, flooding, drought, hail, wind
Key Data Fields
RISK_SCORE: Overall natural hazard risk (0-100)SOVI_SCORE: Social vulnerability indexRESL_SCORE: Community resilience scorePOPULATION: County population- Individual hazard risk scores and ratings
π API Endpoints
Health Check
GET /api/health
Returns system status and data loading information.
States List
GET /api/states
Returns list of all available states/territories.
Counties by State
GET /api/states/{state_name}/counties
Returns list of counties for a specific state.
County Risk Assessment
GET /api/county-risk?state={state}&county={county}
Returns detailed risk data for a specific county.
Example Response:
{
"county_data": {
"county_name": "Fulton",
"state_name": "Georgia",
"risk_score": 92.3,
"risk_rating": "Relatively Moderate",
"population": 1065539,
"social_vulnerability": 69.0,
"community_resilience": 55.3,
"hazards": {
"hurricane": {"risk_score": 80.5, "risk_rating": "Relatively Low"},
"tornado": {"risk_score": 97.3, "risk_rating": "Relatively High"}
}
}
}
Transmission Line Risk
POST /api/transmission-risk
Content-Type: application/json
{
"start_state": "Georgia",
"end_state": "Texas"
}
Calculates combined risk assessment for transmission line between two states.
Route Optimization
POST /api/optimize-route
Content-Type: application/json
{
"start_state": "California",
"end_state": "New York",
"optimization_criteria": "balanced"
}
Finds the optimal transmission line route considering multiple factors.
Optimization Criteria Options:
balanced: Balance distance, risk, and cost (default)distance: Minimize total distancerisk: Minimize average risk scorecost: Minimize total construction cost
Example Response:
{
"optimal_route": {
"route_type": "optimized",
"total_distance": 2403.7,
"average_risk": 62.3,
"risk_level": "High",
"total_cost": 9837.2,
"construction_time": 240,
"route_path": ["California", "Iowa", "New York"],
"intermediate_states": ["Iowa"],
"route_segments": [...]
}
}
Sample Data
GET /api/sample-data
Returns sample risk data from major counties for demonstration.
ποΈ Architecture
Backend (app.py)
- Flask: Lightweight web framework
- Clean API Design: RESTful endpoints with proper error handling
- Real-time Data: Direct integration with FEMA NRI CSV data
Data Layer (nri_data_loader.py)
- Pandas Integration: Efficient CSV data processing
- Data Cleaning: Handles missing values and NaN conversion
- Smart Querying: Flexible state/county lookup with fallbacks
- Risk Calculations: Combined assessment algorithms
Frontend (templates/index.html)
- Modern UI: Clean, responsive design with gradients
- Interactive Map: Leaflet.js integration
- Real-time Updates: Async API calls with status feedback
- Mobile Responsive: Works on all device sizes
π Sample Use Cases
1. County Risk Lookup
- Select "Georgia" β "Fulton County"
- View risk score: 92.3 (Relatively Moderate)
- See detailed hazard breakdown
- Population and vulnerability metrics
2. Transmission Line Planning
- Start State: "Georgia"
- End State: "Texas"
- Combined Risk: 74.6 (High)
- Detailed hazard analysis for both endpoints
3. Regional Comparison
- Compare risk scores across different states
- Identify low-risk corridors for infrastructure
- Analyze specific hazard patterns
4. Route Optimization
- Start State: "California"
- End State: "New York"
- Optimization: "Balanced"
- Result: Optimized route via Iowa (2,404 miles, $9.8B, 240 months)
- Alternative routes with different optimization priorities
π οΈ Technical Details
Data Processing
- NaN Handling: Robust conversion of missing/invalid data
- Type Safety: Safe float/int conversion with defaults
- Performance: Efficient pandas operations for large datasets
Error Handling
- API Errors: Proper HTTP status codes and error messages
- Data Validation: Input sanitization and validation
- Graceful Degradation: Fallback values for missing data
Security
- Input Validation: Parameter sanitization
- CORS Ready: Configurable for production deployment
- No Sensitive Data: Uses public government datasets
π§ Development
Project Structure
βββ app.py # Main Flask application
βββ nri_data_loader.py # FEMA NRI data integration
βββ requirements.txt # Python dependencies
βββ templates/
β βββ index.html # Frontend interface
βββ data/
β βββ NRI_Table_Counties/
β βββ NRI_Table_Counties.csv # FEMA NRI data
βββ venv/ # Virtual environment
Key Dependencies
- Flask 2.3.3: Web framework
- pandas 2.0+: Data processing
- numpy 1.25+: Numerical operations
- requests 2.31+: HTTP client
Adding New Features
- New API Endpoint: Add route in
app.py - Data Processing: Extend
nri_data_loader.py - Frontend: Update
templates/index.html
π Data Quality
Coverage
- β 3,231 counties loaded successfully
- β All 50 states + territories included
- β 8 major hazard types with detailed scoring
Validation
- β NaN values properly handled with defaults
- β Missing data filled with median values
- β Type conversion with error handling
π Success Metrics
The application successfully demonstrates:
- Real Data Integration: Uses actual FEMA government data
- Production Ready: Robust error handling and data validation
- User Friendly: Clean interface with real-time feedback
- Scalable Architecture: Modular design for easy extension
- API First: RESTful design suitable for integration
π Next Steps
Potential enhancements:
- Geographic Visualization: Add county-level risk heatmaps
- Route Optimization: Calculate optimal transmission paths
- Historical Analysis: Trend analysis over time
- Export Features: PDF reports and data downloads
- Advanced Filtering: Multi-criteria risk assessment
Built with real FEMA National Risk Index data for accurate transmission line risk assessment.
Log in or sign up for Devpost to join the conversation.