πŸ—ΊοΈ 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

  1. Activate virtual environment:

    source venv/bin/activate
    
  2. Install dependencies:

    pip install -r requirements.txt
    
  3. Start the application:

    python app.py
    
  4. Open 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 index
  • RESL_SCORE: Community resilience score
  • POPULATION: 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 distance
  • risk: Minimize average risk score
  • cost: 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

  1. New API Endpoint: Add route in app.py
  2. Data Processing: Extend nri_data_loader.py
  3. 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:

  1. Real Data Integration: Uses actual FEMA government data
  2. Production Ready: Robust error handling and data validation
  3. User Friendly: Clean interface with real-time feedback
  4. Scalable Architecture: Modular design for easy extension
  5. 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.

Built With

Share this project:

Updates