This project provides a comprehensive framework for assessing rockfall risk for road networks. It implements a semi-quantitative risk assessment methodology based on the fundamental risk equation: Risk = Hazard × Vulnerability × Exposure.
rockfall-risk-roads/
│
├── config.ini # Configuration settings
├── requirements.txt # Required Python packages
│
├── data/ # Data directory
│ ├── input/ # Input data files
│ └── output/ # Output data files
│
├── examples/ # Example scripts
│ └── hazard_assessment_example.py
│
└── src/ # Source code
├── __init__.py
│
├── hazard/ # Hazard assessment module
│ ├── __init__.py
│ ├── hazard_assessment.py
│ ├── hazard_classification.py
│ ├── parameter_extraction.py
│ ├── runout_analysis.py
│ └── README.md
│
├── vulnerability/ # Vulnerability assessment module
│ └── vulnerability_assessment.py
│
├── exposure/ # Exposure assessment module
│ ├── intrinsic_value.py
│ └── network_relevance.py
│
├── risk/ # Risk calculation module
│ ├── risk_calculation.py
│ └── risk_classification.py
│
├── road/ # Road network handling module
│ ├── classification.py
│ ├── network_analysis.py
│ └── segmentation.py
│
└── utils/ # Utility functions
├── geo_utils.py
├── io_utils.py
└── visualization.py
-
Clone the repository:
git clone https://github.com/yourusername/rockfall-risk-roads.git cd rockfall-risk-roads -
Create a virtual environment and activate it:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate -
Install the required packages:
pip install -r requirements.txt
Before running the assessment, you need to configure the input data paths and parameters in the config.ini file:
[INPUT_DATA]
# Data paths
road_network_file = /path/to/road_network.shp
runout_extent_raster = /path/to/runout_extent.tif
susceptibility_raster = /path/to/max_susceptibility.tif
energy_raster = /path/to/max_energy.tif
velocity_raster = /path/to/max_velocity.tifThe project can be used either from the command line or as a Python module:
Run the example hazard assessment script:
python examples/hazard_assessment_example.py
from src.hazard import HazardAssessment
from src.utils import io_utils
# Create hazard assessment from config file
hazard_assessment = HazardAssessment.from_config("config.ini", io_utils_module=io_utils)
# Load road network and perform assessment
road_segments = io_utils.read_vector("path/to/road_network.shp")
segments_with_hazard, segments_not_in_runout = hazard_assessment.assess_hazard(
road_segments,
simulate_parameters=False
)- Vector data (line geometry) representing the road network
- Essential attributes: ID, type, purpose, state, width, roadbed, level
- Format: Shapefile or any GeoPandas-compatible vector format
- Runout Extent Raster: Binary raster (1 = runout zone) defining the extent of potential rockfall runout
- Susceptibility Raster: Continuous values representing rockfall susceptibility
- Velocity Raster: Continuous values (m/s) representing rockfall velocity
- Energy Raster: Continuous values (kJ) representing rockfall energy
- Slope Units: Vector data (polygon geometry) representing geomorphological units
- Source Areas: Vector data (point/polygon geometry) representing rockfall initiation locations
- Rockfall Clumps: Vector data (polygon geometry) representing rockfall potential source areas
The assessment produces the following outputs:
- Hazard Assessment: Road segments with hazard parameters and classifications
- Vulnerability Assessment: Road segments with vulnerability scores and classifications
- Exposure Assessment: Road segments with exposure scores and classifications
- Risk Assessment: Comprehensive risk assessment combining all components
- Summary Statistics: Statistics and visualizations of the risk assessment results
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
This project was developed based on research in rockfall risk assessment for road networks in the Province of Rome, Italy.