- Overview
- Features
- Requirements
- Installation
- Quick Start
- Configuration
- Output Products
- Visualization
- Architecture
- Dependencies
- Usage Examples
- Contributing
- License
- Authors
- References
ODSAS++ is a high-performance C++ implementation of the Open Digital Shoreline Analysis System (ODSAS), designed for comprehensive coastal change analysis and shoreline evolution studies. This advanced geospatial tool provides researchers and coastal engineers with robust capabilities for analyzing historical shoreline positions and quantifying coastal change rates.
Built upon the foundation of the original ODSAS methodology, ODSAS++ offers enhanced performance, cross-platform compatibility, and extended analytical capabilities for processing large-scale coastal datasets.
- 📊 Comprehensive Shoreline Analysis: Calculate multiple shoreline change statistics (NSM, EPR, LRR, etc.)
- 🚀 High Performance: Optimized C++ implementation for large datasets
- 🌐 Cross-Platform: Compatible with Windows and Linux/Unix systems
- 📁 Multiple Data Formats: Support for GPKG vector files and CSV data
- 🔧 Flexible Configuration: Customizable processing parameters via INI files
- 📈 Statistical Analysis: Advanced coastal change rate calculations with uncertainty quantification
- 🗺️ Geospatial Integration: Built on GDAL/OGR for robust spatial data handling
- Operating System: Windows 10+ or Linux (Ubuntu 18.04+, CentOS 7+)
- Memory: Minimum 4GB RAM (8GB+ recommended for large datasets)
- Storage: 1GB free disk space
- CMake: Version 3.12 or higher
- C++ Compiler: GCC 7+ or MSVC 2019+
- GDAL/OGR: Version 3.0 or higher
- Clone or download the ODSAS++ source code
- Navigate to the project directory
- Configure the build environment:
cmake -S src -B build -DCMAKE_BUILD_TYPE=Release
- Compile the application:
cmake --build build --config Release
- Ensure GDAL is installed and properly configured in your system PATH
- Use Visual Studio 2019 or later for optimal compatibility
- Install GDAL development packages:
sudo apt-get install libgdal-dev gdal-bin # Ubuntu/Debian sudo yum install gdal-devel # CentOS/RHEL
-
Prepare your data:
- Baseline vector file (GPKG format)
- Historical shoreline positions (GPKG format)
- Shoreline timestamps and uncertainty data (CSV format)
-
Configure the analysis:
- Create or modify the initialization file (
.ini) - Set up the run data file (
.dat)
- Create or modify the initialization file (
-
Run the analysis:
./odsas config/your_config.ini
ODSAS++ requires three primary input files:
Contains general configuration parameters for the analysis session.
Specifies run-specific parameters and input file paths.
- Baselines: Vector GPKG file containing points along the baseline where transects will be generated
- Historical Shoreline Positions: Vector GPKG file with historical shoreline geometries
- Historical Shoreline Metadata: CSV file with columns:
ID: Shoreline identifierDay: Date in YYYY-MM-DD formatHour: Time in HH:MM:SS formatUncertainty: Root Mean Square uncertainty in meters
- Profile Spacing: Distance between shore-normal profile lines
- Profile Length: Seaward and landward extent of analysis profiles
- Smoothing Method: Coastline smoothing algorithm options:
- Running mean
- Savitzky-Golay filter
- Shore-Normal Transects (
.gpkg): Transect lines with calculated change metrics - Intersection Points (
.gpkg): Point geometries with detailed crossing analysis results
- Transect Statistics (
transects_stats_##.txt): Comprehensive change statistics including:ID_Profile: Profile identifierNSM: Net Shoreline MovementEPR: End Point RateEPRunc: End Point Rate uncertaintySCE: Shoreline Change EnvelopeLRR: Linear Regression RateLR2: Linear Regression R-squaredWLR: Weighted Linear Regression RateWR2: Weighted Linear Regression R-squared
- ODSAS Input Summary (
.dat): ASCII file containing complete analysis configuration details
ODSAS++ includes professional visualization capabilities for QGIS with automated styling of coastal change results.
The included qgis_style_normals.py script provides:
- 🎨 Dynamic Color Coding: Red (erosion) → White (stable) → Green (accretion)
- 📏 Length Scaling: Line lengths proportional to change magnitude ⭐ NEW!
- 📊 Smart Classification: Statistically-driven breakpoints for meaningful visualization
- 🗺️ Publication Ready: Professional cartographic styling suitable for reports and papers
- 💾 Memory Layer Creation: Preserves original data while displaying scaled visualization
- NSM: Net Shoreline Movement (total change in meters)
- EPR: End Point Rate (linear change rate in m/year)
- LRR: Linear Regression Rate (trend-based rate in m/year)
- EPRunc: Uncertainty quantification visualization
- SCE: Shoreline Change Envelope analysis
# In QGIS Python Console
exec(open('qgis_style_normals.py').read())
quick_style_epr() # Instant styling with End Point Rate and length scaling- Immediate Insights: Line length instantly shows change magnitude
- Spatial Patterns: Reveal trends not obvious in tabular data
- Quality Assurance: Visual validation of analysis results
- Magnitude Comparison: Longer lines = larger changes, shorter lines = smaller changes
- Communication: Professional figures for stakeholders and publications
For detailed instructions, see QGIS_VISUALIZATION.md.
The application implements a structured analytical pipeline:
graph TD
A[main()] --> B[CDelineation::nDoDelineation()]
B --> C[Configuration Loading]
C --> D[Data Input Processing]
D --> E[Transect Generation]
E --> F[Intersection Analysis]
F --> G[Statistical Calculations]
G --> H[Results Output]
ODSAS++ implements a comprehensive error management system:
RTN_OK: Successful operation completionRTN_ERR_*: Specific error codes for:- File I/O operations
- Data processing errors
- Memory allocation failures
- Geospatial data validation issues
The system handles platform-specific requirements through:
- Dynamic file path separator detection
- Platform-optimized API calls
- Compiler-specific optimizations
- Thread-safe function implementations
- GDAL/OGR: Geospatial data abstraction library for vector and raster processing
- Standard C++ Libraries: STL containers, file I/O streams, mathematical functions
- Platform-specific libraries for enhanced functionality and performance optimization
This repository includes a complete worked example analyzing the Moray Firth coastline in Scotland. The example demonstrates all key ODSAS++ capabilities using real coastal data.
- Location: Moray Firth, Scotland
- Data: Historical shoreline positions with uncertainty quantification
- Format: GeoPackage (GPKG) vector files and CSV metadata
- Analysis: 378 shore-normal profiles, 21,377+ intersection measurements
-
Navigate to project directory:
cd ODSAS -
Configure input data (already provided in
in/):Moray_HighWater_15mPoint.gpkg- Baseline shoreline pointsMoray_Processed_Output.gpkg- Historical coastline positionsMoray_Processed_Output.csv- Temporal metadata and uncertaintiesMoray_ODSAS_InputFile.dat- Analysis configuration
-
Run the analysis:
./odsas
-
Check results in
out/directory:normals_Moray_Log.gpkg- Shore-normal profiles with change statisticspoint_Mcoast_Moray_Log.gpkg- Intersection points with distancestransects_stats_Moray_Log.txt- Statistical summarycoast_Moray_Log.gpkg- Processed coastline features
The analysis will generate:
- 378 profiles delineated from baseline to sea and land
- 6,784+ unique measurement points after quality control
- Multiple change metrics: Net Shoreline Movement (NSM), End Point Rate (EPR), Linear Regression Rate (LRR)
- Uncertainty quantification for all measurements
- GPKG format outputs for seamless GIS integration
# Run analysis with default configuration
./odsas config/default.ini# Run with custom parameters
./odsas config/high_resolution_analysis.ini# Process multiple datasets
for config in config/*.ini; do
./odsas "$config"
doneIf editing configuration files in Windows and running in WSL, convert line endings:
# Convert Windows line endings to Unix format
wsl -e sed -i 's/\r$//' ODSAS.ini
wsl -e sed -i 's/\r$//' in/Moray_ODSAS_InputFile.datWe welcome contributions to ODSAS++! Please consider:
- Issues: Report bugs or request features via the issue tracker
- Pull Requests: Submit improvements following our coding standards
- Documentation: Help improve user guides and technical documentation
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for complete terms and conditions.
- Andrés Payo - Project Lead & Principal Developer
- Cristina Torrecillas Lozano - Core Developer
[1] Gómez-Pazo, A., et al. "ODSAS: Open Digital Shoreline Analysis System." Journal of Marine Science and Engineering 2022, 10(1), 26. https://doi.org/10.3390/jmse10010026