| layout | title |
|---|---|
default |
OVC – Overlap Violation Checker |
A modular spatial quality control framework for detecting geometric and topological issues in geospatial datasets
OVC is a Python‑based spatial quality control framework designed to identify geometric and topological issues in geospatial datasets. Users provide their own local buildings and roads files for analysis.
Building QC detects:
- Overlapping and duplicate building geometries
- Boundary containment violations
- Road–building conflicts
Road QC (New in v1.0.2) detects:
- Disconnected road segments not connected to the network
- Self-intersecting roads
- Dangle endpoints (dead ends, incomplete digitization)
OVC is built around clear architectural boundaries, making it suitable for:
- Command‑line usage
- Automated QC pipelines
- Integration into GIS and ETL workflows
- Extension by contributors and advanced users
| Document | Description |
|---|---|
| User Guide | Installation, configuration, CLI usage, troubleshooting |
| Tutorials | Step-by-step learning paths from beginner to advanced |
| Examples | Practical code snippets and real-world use cases |
| API Reference | Python API documentation for programmatic usage |
| Architecture | Design decisions and system structure for contributors |
OVC is intentionally designed as a framework, not a monolithic script.
Key principles:
- Separation of concerns between data loading, validation logic, and output generation
- Configuration‑driven behavior without hard‑coded thresholds
- Deterministic, testable QC checks
- No hidden side effects or implicit state
For architectural details, see: Architecture Overview
| Check | Description |
|---|---|
| Overlap Detection | Identify duplicate and partial building overlaps |
| Boundary Compliance | Flag buildings outside or crossing boundaries |
| Road Conflicts | Detect buildings intersecting road buffers |
| Check | Description |
|---|---|
| Disconnected Segments | Roads not connected to the network |
| Self-Intersections | Roads that cross themselves |
| Dangles | Dead-end endpoints (filters boundary edges) |
- Accept user‑provided local datasets (Shapefile, GeoJSON, GeoPackage, etc.)
- Normalize schemas across heterogeneous sources
- Reproject data to metric CRS for accurate spatial analysis
- Scale to large datasets through spatial indexing
- Export violations as GeoPackage and CSV
- Generate interactive HTML web maps with legends
- Produce analysis‑ready outputs for GIS software
- Maintain consistent, structured result schemas
- Command‑line interface for batch processing
- Modular QC checks that can be extended independently
- Clean Python API for advanced workflows
- Designed for CI/CD and scheduled validation runs
- Pre‑publication validation of geospatial datasets
- Continuous QC for institutional data workflows
- Compliance checks against administrative boundaries
- Detect disconnected road segments
- Find incomplete digitization (dangles)
- Identify self-intersecting roads
- Cleaning building inventories before analysis
- Detecting conflicts in road networks
- Automated QC steps in spatial pipelines
- Validation of digitized building footprints
- Conflict detection in dense urban environments
- Pre‑processing for planning and analytics tools
Clone the repository:
git clone https://github.com/AmmarYasser455/ovc.git
cd ovcCreate a virtual environment (recommended):
python -m venv venv
source venv/bin/activate # Linux / macOS
venv\Scripts\activate # WindowsInstall dependencies:
pip install -e .Building QC only:
python scripts/run_qc.py \
--buildings path/to/buildings.shp \
--out outputsBuilding + Road QC:
python scripts/run_qc.py \
--boundary path/to/boundary.geojson \
--road-qc \
--out outputsFor more usage options, see the User Guide.
Both modules produce outputs in a unified folder structure:
outputs/
├── building_qc/
│ ├── building_qc.gpkg # GeoPackage with layers
│ ├── building_qc_map.html # Interactive web map
│ └── building_qc_metrics.csv # Summary metrics
└── road_qc/ # Only when --road-qc is enabled
├── road_qc.gpkg
├── road_qc_map.html
└── road_qc_metrics.csv
| Output Type | Description |
|---|---|
| GeoPackage | Spatial layers containing detected issues |
| CSV reports | Summary statistics and metrics |
| HTML web map | Interactive map for visual inspection |
- Python 3.10+
- GeoPandas
- Shapely
- PyProj
- Pandas
- Folium
For the complete dependency list, refer to pyproject.toml.
- New users: Start with the User Guide for installation and CLI usage
- Learn by doing: Follow the Tutorials for hands-on learning
- Quick reference: Browse Examples for copy-paste solutions
- Developers: Explore the API Reference for Python integration
- Contributors: Read the Architecture documentation
Questions or issues?
Open an issue or check the User Guide for troubleshooting.
