Organised Editing/Activities/TomTom/Global - Building Height Imports/France - IGN BD TOPO Building Heights Import
Overview
TomTom, in consultation with the French OpenStreetMap community, is supporting a community-reviewed
import to enrich existing OSM building footprints in Paris with missing height=* and
building:levels=* tags. The heights and floor counts are derived from the
BD TOPO dataset published by the Institut national de
l'information géographique et forestière (IGN).
This activity follows an import-style workflow with upfront community consultation, transparent documentation, conservative acceptance rules, and a staged rollout starting with a small-scale pilot in Paris.
🗨️ Community discussion: [France/Paris Projet d'import automatique des hauteurs de bâtiments – IGN BD TOPO] on the French OSM forum.
Important Disclaimer — Height Definition
The definition of height in the IGN BD TOPO source differs from the OSM definition of
height=*:
- In OSM,
height=*represents the total height of the building including the roof (from ground to the highest point of the structure). - In IGN BD TOPO, the HAUTEUR attribute measures the distance from the ground to the highest point of the gutter. It therefore never includes the roof volume, and is even slightly different from the eaves / top-of-wall height. See the IGN BD TOPO documentation for the official definition.
As a consequence, for buildings with non-flat roofs, the imported height=* value will
underestimate the true OSM-defined height. In Paris specifically, buildings often have
at least one roof:level=*, so the underestimation will typically exceed 3 m.
Mitigation measures applied in this project:
- The pilot run and initial phases are restricted to buildings with flat roofs, which minimises (but does not eliminate) the discrepancy — even in this case the OSM and IGN definitions are not strictly equivalent, since the IGN HAUTEUR is measured to the gutter rather than to the highest point of the structure.
- For buildings with pitched or complex roofs, additional analysis and potential adjustment heuristics will be discussed with the community before inclusion in subsequent phases.
- All affected values are sourced via
source:height=*for full traceability.
This limitation is acknowledged openly to ensure full transparency with the OSM community and to invite feedback on the most appropriate handling for non-flat-roof buildings.
Context
Paris contains over 103,000 buildings in OpenStreetMap. While building footprints are well
represented, approximately 36,500 buildings currently lack any Level of Detail (LOD) information
— neither height=* nor building:levels=* tags.
The IGN BD TOPO dataset now makes adding building heights feasible at a city and national scale. Thanks to this source, approximately 19,500 Parisian buildings can be enriched with height information, representing 53% of the identified gap.
Adding reliable building heights enables:
- Better 3D map representations and routing
- Urban planning and digital twin use cases
- Environmental modelling (e.g. flood risk, solar analysis)
- AR/VR and visualization applications
This effort is supported by TomTom, which has committed engineering and community resources. The same process and tools used for the Netherlands – 3D BAG Building Heights Import and the Japan – PLATEAU Building Height Enrichment are being applied here.
We welcome everyone to voice, contribute, review and challenge any part of this project.
Data Source
Primary Source: BD TOPO (IGN)
| Field | Details |
|---|---|
| Dataset | BD TOPO |
| Producer | Institut national de l'information géographique et forestière (IGN) |
| Download | cartes.gouv.fr — IGNF_BD-TOPO (download per department) |
| Edition used | 3.5 (dated 15 March 2026) |
| Format | Shapefile |
| Projection | EPSG:2154 (Lambert-93) |
| Geographic coverage | National (France métropolitaine + overseas departments) |
| Paris scope | Department 75 — 118,496 building records |
| Height attribute | HAUTEUR (metric height to the gutter — see disclaimer above) |
| Storeys attribute | NB_ETAGES (floor count) |
| Height populated | 93.5% of Paris records |
| Floors populated | 93.5% of Paris records |
| Polygons per building | ~1 (one polygon per building) |
| Update cadence | Regularly refreshed by IGN |
Why BD TOPO as Primary Source
BD TOPO carries both metric height and floor count on the same record, populated on 93.5% of Paris buildings. The data model is also cleaner: BD TOPO has mostly one polygon per building, which matches OSM's building representation and simplifies conflation.
BD TOPO is also a national dataset, meaning the methodology can be extended to other French cities without changing source. Edition 3.5 is dated 15 March 2026 and IGN refreshes it regularly, making it a solid and current reference.
| Aspect | BD TOPO (IGN) | Volumes bâtis (Ville de Paris) |
|---|---|---|
| Records (Paris dep. 75) | 118,496 buildings | 361,893 polygons (~120,000 unique buildings) |
| Polygons per building | ~1 | ~2–4 |
| Height populated | 93.5% | 0% |
| Floors populated | 93.5% | 100% |
| Coverage | National | Paris only |
| Floor agreement (overlap set) | — | 61% exact match; 83.1% within ±1 floor |
Secondary / Fallback Source: Volumes bâtis (Ville de Paris)
Volumes bâtis is a building volumes dataset published by the Direction de l'Urbanisme of the Ville de Paris. It covers approximately 4,113 OSM Paris buildings (~4%) where BD TOPO has no data. It is retained as a fallback source for incremental coverage.
Note: Volumes bâtis is a volumes dataset, not a buildings dataset. Each building is decomposed into multiple polygons representing parts at different heights. The 361,893 polygon count does not represent 361,893 buildings — the effective building count is ~120,000.
| Field | Details |
|---|---|
| Dataset | Volumes bâtis |
| Publisher | Direction de l'Urbanisme — Ville de Paris |
| License | ODbL (Open Database License) — direct fit, same license as OSM |
| Floor counts | Present on 100% of records |
| Metric height | Not available (must be derived) |
| Height heuristic | height = nb_pl × 3.2 (based on cross-validation with BD TOPO) |
License
| Field | Details |
|---|---|
| BD TOPO license | Licence Ouverte Etalab 2.0 |
| ODbL compatibility | Confirmed — ODbL compatible per the OpenStreetMap Foundation (OSMF) |
| Commercial use | Allowed |
| Attribution required | Yes |
| Source attribution | IGN BD TOPO |
| Volumes bâtis license | ODbL (Open Database License) — direct fit, same license as OSM |
No additional waiver or review by the OpenStreetMap Foundation License Working Group (LWG) is required for either source. The Licence Ouverte Etalab 2.0 is recognised as ODbL-compatible by the OSMF.
Acronym reference: LWG = License Working Group (a working group of the OpenStreetMap Foundation responsible for assessing license compatibility with the ODbL); OSMF = OpenStreetMap Foundation.
Import Scope
| Parameter | Value |
|---|---|
| Geographic scope | Paris city (intra-muros, 20 arrondissements) |
| OSM relation | Paris (relation 71525) |
| OSM buildings in scope | 103,458 |
| OSM buildings missing LOD | ~36,500 |
| Buildings updatable from BD TOPO | ~19,500 (53% of the gap) |
| BD TOPO match rate | 99.93% of OSM Paris buildings find a BD TOPO match |
| Expected import yield | ~93.4% of OSM buildings receiving at least one new attribute |
| Fallback (Volumes bâtis only) | ~4,113 buildings (4%) |
What is in scope
The current workflow enriches existing OSM buildings only with missing height and/or building:levels information.
It does NOT:
- Create new OSM buildings
- Import missing buildings
- Modify geometry
- Overwrite any existing values
Exclusions
The following buildings are excluded from the import scope:
- Buildings tagged with
building:part=* - Buildings that contain any
building:part=*object within their footprint - Buildings whose geometry intersects with any
building:part=*object - Buildings that already have
height=*orbuilding:levels=*tags (existing values are never overwritten) - Buildings modelled in 3D in OSM
- Buildings whose source height is below the minimum threshold (2.5 m)
- Building types not on the inclusion list (see Methodology — Filters)
Methodology
Process Workflow
The import workflow consists of the following sequential steps:
- Get OSM data (PBF file)
- Parse source data (BD TOPO shapefile)
- Fill candidates table
- Apply filters → identify matches
- Create validation files
- Create OSC files
- Create fallout files
- Create stats files
- Run update process
Workflow Notes and Definitions
- OSM and source data are written to PostgreSQL tables for processing.
- Source geometry is converted to EPSG:4326 if needed.
- A candidate is any OSM building that intersects with a source building.
- A match is any candidate that passes all filters.
- All matches are assigned to a zoom-level 15 tile.
- Validation files (GeoJSON):
- <city>_match_validation_tiles.json
- <city>_match_validation.json
- OSC files contain all updates for a single tile (file naming convention: tilex-tiley).
- Fallout files are generated per filter; a candidate can fail multiple filters and appear in multiple fallout files.
- Stats file includes:
- Total source buildings
- Total candidates
- Total matches
- Total rejections
- Rejection reason counts
- Total tiles
- Update counts by OSC file
- During the update process, one OSM changeset is created per tile.
Filters
The following filters are applied to candidates to determine matches:
| Filter | Threshold / Definition |
|---|---|
| Minimum overlap percentage | 70% |
| Invalid source geometry | Self-intersections, malformed rings, corrupted polygons |
| Existing OSM height tag | Do not overwrite existing heights |
Existing OSM building:levels=* tag |
Do not add height if levels already exist |
| Minimum source height | 2.5 m |
| Maximum source-to-OSM area ratio | 120% |
| Existing OSM building modelled in 3D | Filtered out |
| Building type inclusion list | See list below |
Building Type Inclusion List
The import is restricted to OSM buildings whose building=* value is one of:
allotment_house, annexe, apartments, bakehouse, barracks, boathouse, bungalow, cathedral, chapel, church, civic, clock_tower, college, commercial, conservatory, detached, dormitory, fire_station, garages, government, hangar, hospital, hotel, house, industrial, kindergarten, kingdom_hall, kiosk, military, monastery, mosque, museum, office, outbuilding, parking, pavilion, presbytery, public, religious, residential, retail, riding_hall, school, semidetached_house, service, sports_centre, sports_hall, stadium, supermarket, synagogue, temple, tower, train_station, transportation, university, warehouse, yes
Tagging
Per-building tags
| OSM Key | Value (example) | Notes |
|---|---|---|
height=* |
15.2 | Metres. Derived from BD TOPO HAUTEUR attribute. See disclaimer regarding height definition. |
building:levels=* |
5 | Above-ground floor count from BD TOPO NB_ETAGES |
source:height=* |
IGN BD TOPO | Source attribution applied to every building updated with height=*
|
source:height:date=* |
TBD | Date value to be confirmed (edition release date vs. per-record modification date) |
For Volumes bâtis fallback buildings:
| OSM Key | Value (example) | Notes |
|---|---|---|
building:levels=* |
MAX nb_pl across VB volumes inside the OSM polygon | Floor count |
height=* |
round(nb_pl × 3.2, 1) | Only if nb_pl ≥ 2 |
source:height=* |
Volumes_batis | Source attribution |
source:height:date=* |
2025-05-15 |
Per-changeset tags
| OSM Key | Value |
|---|---|
comment=* |
Add building heights from IGN BD TOPO — Paris pilot #tomtom-osm #paris-bdtopo |
source=* |
IGN BD TOPO |
import=* |
yes |
One changeset is created per zoom-15 tile.
Conflation and Acceptance
Buildings are matched between BD TOPO and OSM using a full spatial join. A candidate is any OSM building that intersects a BD TOPO building; a match is any candidate that passes all filters listed in the Methodology section.
A candidate is rejected if any of the following apply:
- Overlap with source polygon is less than 70%
- Source geometry is invalid (self-intersections, malformed rings, corrupted polygons)
- Source-to-OSM area ratio exceeds 120%
- Source height is below 2.5 m
- OSM building already has a
height=*tag - OSM building already has a
building:levels=*tag (no height added) - OSM building is modelled in 3D
- OSM building's type is not in the inclusion list
Rejected candidates are written to per-filter fallout files for transparency and review.
Approach and Compliance
The automatic import of building heights is conducted in full alignment with the OSM Automated Edits Code of Conduct and Import Guidelines. This includes:
- Creating this dedicated OSM Wiki page describing the import plan, methodology, and data sources
- Ensuring the process is transparent and well-documented
- Providing regular updates to the community about progress and next steps
Our approach is iterative:
- A small-scale test import on a limited set of 20–30 buildings
- Community review period with time for feedback and validation
- Based on feedback, a detailed and community-reviewed import plan before scaling up
- Paris city scope updated in phases with QC and time for community review between each phase
Phased Rollout Plan
The import will proceed in phases to minimise risk, allow iterative validation, incorporate community feedback, and ensure quality control at each stage.
| Phase | Description | Buildings | Status |
|---|---|---|---|
| Pilot | Small-scale test — flat-roof buildings only, height only | 2 changesets | ✅ Completed |
| Phase 1+ | Paris city scope, broken into geographic phases with QC | ~19,500 total | Pending community review |
Detailed phase definitions (arrondissement-level breakdown) will be published here once community feedback on the pilot has been incorporated.
Acceptance Criteria (per phase)
- Import script runs successfully
- No unintended overwrites of existing OSM data
- All edits are properly grouped into changesets with descriptive comments (one changeset per tile)
- Changes follow OSM import guidelines and tagging standards
- Each phase passes QC and community review before proceeding
Post-phase Reporting
After completing each phase, the following summary will be published on this wiki page and announced on the forum thread:
- List of OSM changeset IDs created
- Number of successfully updated buildings
- Number of rejected buildings (with reason codes)
- Any issues encountered and how they were resolved
Editing Account
All automated edits are performed under the dedicated TTmechanicalupdates account. This ensures transparency, easy identification in object history, and separation from personal mapping.
Revert Plan
If a problem is identified in any batch:
- Per-changeset (per-tile) revert is the default mitigation, using standard OSM revert tools
- Larger reverts (multi-changeset) will be coordinated with the French community via the forum thread before action
- The TTmechanicalupdates account is dedicated to these edits, so reverts can be scoped cleanly
Process Output — Statistics
Run summary (Paris, 18 June 2026)
The full process run on the Paris BD TOPO dataset produced the following output. The run processed 118,091 source buildings in approximately 10 minutes 21 seconds.
| Metric | Value |
|---|---|
| Source buildings processed | 118,091 |
| Total candidates | 266,277 |
| Matched (to be imported) | 19,541 (7.3%) |
| Rejected | 246,736 (92.7%) |
| Match-to-candidate ratio | ~1 in 14 candidates becomes a match |
| Total OSC files generated | 193 |
| Total run time | ~10 min 21 s |
Rejection breakdown
The largest rejection reason is, by far, invalid overlap percentage (below the 70% threshold). Note: rejection reasons are non-exclusive — a single candidate can fail multiple filters and therefore be counted in more than one row. As a result the sum of the shares exceeds 100%.
| Rejection reason | Count | Share of rejected |
|---|---|---|
| invalid_overlap_pct | 185,692 | 75.3% |
| invalid_source2osm_area_ratio | 68,895 | 27.9% |
| invalid_source_height | 11,535 | 4.7% |
| osm_3d_building | 4,276 | 1.7% |
| excluded_building_type | 2,152 | 0.9% |
| osm_height_exists | 968 | 0.4% |
| invalid_source_geom | 0 | 0.0% |
Matched building types
Generic building=yes and building=apartments together account for about 93.9%
of all matches.
| Building type | Matches | Share of matches |
|---|---|---|
| yes | 12,361 | 63.3% |
| apartments | 5,976 | 30.6% |
| house | 344 | 1.8% |
| office | 147 | 0.8% |
| school | 131 | 0.7% |
| hotel | 118 | 0.6% |
| hospital | 63 | 0.3% |
| retail | 57 | 0.3% |
| church | 37 | 0.2% |
| service | 35 | 0.2% |
OSC output
The process produced 193 OSC files (one per zoom-15 tile containing matches). The busiest tiles by update count are:
| Tile | Updates |
|---|---|
| 11276-16595 | 374 |
| 11273-16596 | 366 |
| 11268-16595 | 365 |
| 11269-16601 | 311 |
| 11271-16602 | 298 |
| 11275-16593 | 295 |
| 11276-16594 | 292 |
| 11270-16602 | 290 |
| 11269-16596 | 287 |
| 11273-16602 | 284 |
Pilot Run
The pilot has been completed using a conservative configuration designed to minimise risk and allow community review before any larger-scale activity.
Pilot scope
- Scope: Flat-roof buildings only — the OSM and IGN height definitions are closest for this subset, which minimises (though does not eliminate) the discrepancy described in the disclaimer above.
- Tags updated:
height=*together with the source attribution tagsource:height=IGN BD TOPOon each updated building. No other tags (includingbuilding:levels=*) were modified. - No regression: All other existing tags on the affected buildings were preserved unchanged.
Pilot changesets
| Changeset | Link |
|---|---|
| 184429626 | openstreetmap.org/changeset/184429626 |
| 184429627 | openstreetmap.org/changeset/184429627 |
Outcome
- Results are as expected — values applied match source values within tolerance.
- Edits are limited to
height=*andsource:height=*on flat-roof buildings only. - No regression observed on any other tags.
- Changesets are publicly visible for community review.
We invite the French OSM community to review these changesets and share any feedback, concerns, or questions on the forum thread before we proceed with the phased rollout.
Community Engagement and Announcements
Forum thread
Primary consultation channel: [France/Paris Projet d'import automatique des hauteurs de bâtiments – IGN BD TOPO]
Announcements timeline
| Date | Subject | Posted by |
|---|---|---|
| June 2026 | Initial community discussion post — project introduction, source description, feedback request | Priscilla Zachee (TomTom) |
| June 2026 | Pilot run completed — changesets shared for community review | Priscilla Zachee (TomTom) |
Engagement principles
- All plans are shared with the community before any edits are made
- Community feedback is actively solicited and incorporated
- Each phase includes a review period before proceeding
- All changesets are shared for community review
- Concerns, objections, and suggestions are addressed transparently
Data Quality and Cross-validation
All statistics below are based on full dataset analysis (not sampling). Both datasets (~100,000+ records each) were processed in full.
| Metric | Value | Notes |
|---|---|---|
| BD TOPO Paris records | 118,496 | Department 75, Edition 3.5 (15 March 2026) |
| BD TOPO records with LOD attributes | ~93.5% | Height and/or floors populated |
| OSM Paris buildings | 103,458 | Overpass extract |
| OSM buildings matching BD TOPO | 99.93% | Spatial join + deterministic ID |
| Expected import yield | ~93.4% | Intersection of source completeness and OSM coverage |
| Volumes bâtis only (fallback) | 4,113 buildings | 4.0% — where BD TOPO has no data |
| Neither source | 4,823 buildings | 4.7% — manual or skip |
| BD TOPO vs VB floor agreement | 61% exact; 83.1% within ±1 floor | On 79,338 overlap buildings |
Methodology of statistics
- Source-side counts: Direct census of BD TOPO 3.5 for department 75
- OSM-side: OSM Paris buildings via Overpass extract (103,458 buildings)
- Matching: Full join using deterministic IDs where available, centroid-in-polygon spatial fallback
- Cross-validation: BD TOPO vs Volumes bâtis on the full overlap set (79,338 buildings)
- Inputs:
- BD TOPO: cartes.gouv.fr — IGNF_BD-TOPO
- Volumes bâtis: opendata.paris.fr
- OSM: Overpass or Geofabrik Île-de-France, clipped to department 75
- Analysis recorded in: MAPEX-8188 Gate 3
Current Status
| Item | Status |
|---|---|
| Source data analysis (MAPEX-8188) | ✅ Complete |
| Process preparation (MEP-20875) | 🔄 In progress |
| Technical documentation | ✅ Complete (this page) |
| Wiki page | ✅ Published |
| Community forum post | ✅ Published |
| Process run on full Paris scope | ✅ Complete (18 June 2026) |
| Pilot run (flat-roof buildings, 2 changesets) | ✅ Complete |
| Phased rollout | ⏳ Pending community review of pilot |
Open Questions
The following community question is being addressed:
- Location accuracy: What is the average offset between OSM building footprints and IGN BD TOPO footprints for matched buildings? — Analysis in progress; results will be documented here once available.
Note: The question regarding the difference between IGN and OSM height definitions has been formally acknowledged and addressed in the Important Disclaimer section at the top of this page.
Contact
- Project lead: Salim Baidoun (TomTom)
- Community liaison: Priscilla Zachee (TomTom)
- For questions or feedback: OSM@tomtom.com
- Parent project page: Organised_Editing/Activities/TomTom/Global_-_Building_Height_Imports
- TomTom organised editing overview: Organised_Editing/Activities/TomTom