Skip to content

Latest commit

 

History

History
235 lines (172 loc) · 6.37 KB

File metadata and controls

235 lines (172 loc) · 6.37 KB
layout title
default
OVC – Overlap Violation Checker
OVC Logo

Overlap Violation Checker (OVC)

A modular spatial quality control framework for detecting geometric and topological issues in geospatial datasets


Overview

OVC Workflow

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

Documentation

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

Design Philosophy

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


Core Capabilities

Building QC

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

Road QC (New in v1.0.2)

Check Description
Disconnected Segments Roads not connected to the network
Self-Intersections Roads that cross themselves
Dangles Dead-end endpoints (filters boundary edges)

Data Handling

  • 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

Output & Reporting

  • 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

Automation & Extensibility

  • 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

Typical Use Cases

Data Quality Assurance

  • Pre‑publication validation of geospatial datasets
  • Continuous QC for institutional data workflows
  • Compliance checks against administrative boundaries

Road Network Analysis

  • Detect disconnected road segments
  • Find incomplete digitization (dangles)
  • Identify self-intersecting roads

GIS & ETL Workflows

  • Cleaning building inventories before analysis
  • Detecting conflicts in road networks
  • Automated QC steps in spatial pipelines

Urban & Infrastructure Analysis

  • Validation of digitized building footprints
  • Conflict detection in dense urban environments
  • Pre‑processing for planning and analytics tools

Getting Started

Installation

Clone the repository:

git clone https://github.com/AmmarYasser455/ovc.git
cd ovc

Create a virtual environment (recommended):

python -m venv venv
source venv/bin/activate    # Linux / macOS
venv\Scripts\activate       # Windows

Install dependencies:

pip install -e .

Quick Start

Building QC only:

python scripts/run_qc.py \
  --buildings path/to/buildings.shp \
  --out outputs

Building + Road QC:

python scripts/run_qc.py \
  --boundary path/to/boundary.geojson \
  --road-qc \
  --out outputs

For more usage options, see the User Guide.


Outputs

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

Requirements

  • Python 3.10+
  • GeoPandas
  • Shapely
  • PyProj
  • Pandas
  • Folium

For the complete dependency list, refer to pyproject.toml.


Next Steps

  • 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.