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.
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 Type | Description |
|---|---|
| No Tags | Complete absence of accessibility information |
| Partial Tags | Surface type present but no smoothness/wheelchair info |
| Outdated Tags | Tags older than 2 years are flagged for review |
| Conflicting Tags | Multiple 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.
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.
| Metric | Requirement |
|---|---|
| Confidence Threshold | >80% recommended for contribution after review; lower-confidence proposals receive additional review |
| Coverage Requirement | At least 70% for the current apply workflow |
| Agreement Rate | At 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.
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.
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.
| Tool | Purpose |
|---|---|
| Interactive Maps | Color-coded proposals with confidence scores |
| Street-level imagery | Verify segments visually |
| Historical Comparison | Track changes over time |
| Community Feedback | Enable 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.
| Feature | Description |
|---|---|
| Tag Conflict Detection | Flags potential disagreements between existing and new tags |
| Temporal Validation | Identifies outdated assessments to keep data current |
| Coverage Verification | Verifies segments meet the minimum coverage threshold |
| Confidence Validation | Checks accuracy and reliability of scoring metrics |
| Feature | Description |
|---|---|
| Expert Review | Accessibility specialists validate high-impact proposals |
| Community Testing | Wheelchair users test and verify proposed classifications |
| Cross-Validation | Compares results against independent assessments |
| Feedback Integration | Updates scoring based on community and expert feedback |
Prioritize high-traffic routes
Ensure sufficient data quality
Validate against standards
Provide documentation
Gather feedback
Refine based on community input
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.
| Action | Description |
|---|---|
| Start With Gaps | Focus on street segments without existing tags |
| Verify Proposals | Use multiple validation methods to ensure accuracy |
| Document Changes | Provide clear reasoning in changeset comments |
| Engage Community | Discuss proposals with local mappers for feedback |
| Action | Description |
|---|---|
| Systematic Approach | Map entire areas rather than individual segments |
| Quality Control | Implement multi-stage validation processes |
| Community Involvement | Include wheelchair users in validation workflows |
| Long-Term Monitoring | Track 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.
| Metric | Description |
|---|---|
| Coverage Increase | Percentage of segments with accessibility tags |
| Quality Improvement | Average confidence scores for new tags |
| Community Acceptance | Rate of proposal acceptance by OSM community |
| Long-term Accuracy | Validation of classifications over time |
| Metric | Description |
|---|---|
| Contributor Satisfaction | Positive feedback from OSM community |
| User Benefit | Improved wheelchair navigation experience |
| Data Quality | Consistency with established OSM standards |
| Sustainability | Ongoing community maintenance and updates |