OSM Integration

How to fill gaps without overriding existing map data.

Overview

Procedures for responsibly integrating accessibility data into OSM, combining automated and manual validation with best practices for contributors and cities. Coverage and accuracy metrics track the quality of contributions.

Core Principle

The system never overrides existing OSM tags. Its design focuses on identifying gaps in wheelchair accessibility data while respecting the work of current contributors. Gap-filling and overriding are treated as fundamentally different actions, and everything downstream is built around that distinction.

Gap Detection Strategy

Before filling gaps in accessibility data, the system first identifies which segments already carry OSM tags, so only missing or outdated information is targeted. The check runs before any proposal is generated, so existing contributor work is recognized up front rather than filtered out late.

Existing Tag Check
def check_existing_tags(way_id, osm_api):
    """Check if way already has smoothness or wheelchair tags."""
    tags = fetch_way_tags(way_id)

    existing_tags = {
        'smoothness': tags.get('smoothness'),
        'wheelchair': tags.get('wheelchair'),
        'surface': tags.get('surface')
    }

    return any(existing_tags.values())

When the check finds existing values, the segment is not simply skipped. Each way is sorted into one of four gap types, which determines whether the system may propose a tag, flag data for review, or leave the segment untouched.

Gap Classification
Gap TypeDescription
No TagsComplete absence of accessibility information
Partial TagsSurface type present but no smoothness/wheelchair info
Outdated TagsTags older than 2 years are flagged for review
Conflicting TagsMultiple contributors provide different assessments

Proposal Generation Rules

After gaps are identified, proposals are generated following clear rules that determine when and how new accessibility tags should be applied.

Gap-Only Proposal
def generate_proposal(way_data, existing_tags):
    """Generate proposal only for gaps, respecting existing data."""

    if existing_tags.get('smoothness'):
        return None  # Never override existing smoothness

    if existing_tags.get('wheelchair'):
        return None  # Respect existing wheelchair assessment

    # Only propose for genuine gaps
    return create_accessibility_proposal(way_data)

A proposal that clears the gap check still has to earn its way out of the pipeline. Three quality gates filter what reaches reviewers, so only measurements with enough confidence, coverage, and internal agreement turn into proposals.

Quality Gates
MetricRequirement
Confidence Threshold>80% recommended for contribution after review; lower-confidence proposals receive additional review
Coverage RequirementAt least 70% for the current apply workflow
Agreement RateAt least 70% point agreement in the current single-ride workflow

Automatic multi-ride consensus is future work. A 75% consensus threshold remains a proposed target rather than an implemented trigger, so every proposal in the current workflow is reviewed and applied per ride rather than by automated agreement.

Manual Review Process

Automation only prepares the ground. Before anything reaches OpenStreetMap, each proposal is reviewed, and the process differs depending on whether it fills a gap or challenges a tag that already exists. Nothing in the workflow currently bypasses this step. Once the method is validated, these measures can be gradually relaxed.

Gap-Filling Proposals

Contributors follow a clear sequence that keeps updates consistent and verifiable, from confirming the affected road segment to documenting the evidence behind every edit before it is submitted to OpenStreetMap.

Review Steps
Verify Segment
Confirm the proposal covers the correct road segment
Check Confidence
Review the confidence score and contributing factors
Validate Visually
Use Mapillary or KartaView when possible
Consider Context
Account for recent construction when possible

Override Decisions

Overrides are proposals that contradict a tag another mapper has already set. Even at high confidence they require careful scrutiny, so the evidence bar is deliberately higher than for filling an empty segment.

Evidence Rules
Strong Evidence
Require multiple high-confidence rides
Temporal Comparison
Check if surface condition has genuinely changed
Community Consultation
Discuss significant changes with local mappers
Documentation
Provide clear reasoning in changeset comments

Following that sequence is easier with the right tooling. The project ships several aids that make review faster and more reliable, each aimed at a different part of the checklist – seeing proposals in context, verifying them visually, and tracking how segments change.

Review Tools
ToolPurpose
Interactive MapsColor-coded proposals with confidence scores
Street-level imageryVerify segments visually
Historical ComparisonTrack changes over time
Community FeedbackEnable validation and suggestions

Quality Assurance

Quality assurance is proposed to combine automated checks and hands-on review to ensure the dataset is reliable and precise. Automated processes can flag potential issues, while manual validation can verify high-impact proposals. These two layers can catch different failure modes. Once the method is validated, these measures can be gradually relaxed.

Automated Checks
FeatureDescription
Tag Conflict DetectionFlags potential disagreements between existing and new tags
Temporal ValidationIdentifies outdated assessments to keep data current
Coverage VerificationVerifies segments meet the minimum coverage threshold
Confidence ValidationChecks accuracy and reliability of scoring metrics
Manual Validation
FeatureDescription
Expert ReviewAccessibility specialists validate high-impact proposals
Community TestingWheelchair users test and verify proposed classifications
Cross-ValidationCompares results against independent assessments
Feedback IntegrationUpdates scoring based on community and expert feedback
Contribution Workflow
Gap Identification
Scan for missing accessibility tags

Prioritize high-traffic routes

Ensure sufficient data quality
Proposal Generation
Apply wheelchair-focused confidence metrics

Validate against standards

Provide documentation
Community Review
Share via interactive maps/CSV

Gather feedback

Refine based on community input
Contribution
Include detailed changeset documentation

Enforce quality gates

Engage the community

Best Practices

These practices keep contributed data accurate, consistent, and useful. They outline steps for contributors to follow before moving on to city or organization-level workflows.

For Contributors
ActionDescription
Start With GapsFocus on street segments without existing tags
Verify ProposalsUse multiple validation methods to ensure accuracy
Document ChangesProvide clear reasoning in changeset comments
Engage CommunityDiscuss proposals with local mappers for feedback
For Cities
ActionDescription
Systematic ApproachMap entire areas rather than individual segments
Quality ControlImplement multi-stage validation processes
Community InvolvementInclude wheelchair users in validation workflows
Long-Term MonitoringTrack changes and improvements over time

Success Metrics

Success metrics track improvements in coverage, data quality, and community adoption; the broader community benefits are assessed separately below.

Data Quality
MetricDescription
Coverage IncreasePercentage of segments with accessibility tags
Quality ImprovementAverage confidence scores for new tags
Community AcceptanceRate of proposal acceptance by OSM community
Long-term AccuracyValidation of classifications over time
Community Impact
MetricDescription
Contributor SatisfactionPositive feedback from OSM community
User BenefitImproved wheelchair navigation experience
Data QualityConsistency with established OSM standards
SustainabilityOngoing community maintenance and updates