User:AlephNull/roofs
Personal collection of various roof shapes and ideas for how to map them. For current community consensus see Simple 3D Buildings. See also taginfo page for roof:shape.
Goals
Use approaches that work well for their tasks: simple 3D (potentially multiple building parts but no dedicated roof geometry) should mix well with mapping roof ridges explicitly.
Currently an issue: mapping complex roof geometry (such as churches) and lining up skillions and gables.
roof=*

Mount Nebo, Jordan
Open buildings or building parts: roof=no.
Currently roofless buildings are commonly mapped as barrier=wall. Particularly for complex ruins it would be nice to be able to distinguish the inside and the outside of
the buildings. For example, consider the ruins of an extended monastery complex: mapping only the walls would make it harder to understand the structure.
Suggested rendering: similar to normal building, potentially with a dashed outline and/or a lighter fill colour.
In some cases it might even make sense to combine roof=no with roof:shape=* if enough is left to recognize the original roof shape.
Buildings or building parts with a roof terrace: roof=terrace.
roof:shape=*
Atomic roof shapes
| Example | Tagging | Comments |
|---|---|---|
roof:shape=gabled + (roof:orientation=*)
|
Prototypical roof form. Already a very established tag. See | |
roof:shape=flat
|
Common modern roof form. Already a very established tag. See | |
roof:shape=hipped + (roof:height=H)
|
Common roof form. Already an established tag. See | |
roof:shape=half-hipped + (roof:levels=*) + (roof:height=H)
|
Typical values of roof:levels=* might be 1/1.5/2. See hipped.
| |
roof:shape=butterfly + (roof:height=H)
|
Dual of roof:shape=gabled.
| |
roof:shape=pyramidal + (roof:height=H)
|
||
roof:shape=round or roof:shape=round_gabled
|
Analogous to roof:shape=gabled. Relatively common roof shape for industrial and agricultural buildings, sometimes reaching down to the ground. Also used as a roof shape for skylights. See | |
roof:shape=round_pyramidal + (roof:height=H)
|
Pyramidal roof slopes which curve to a dull peak. Compare with roof:shape=dome which is similar but has a circular base. See Alternative tag name | |
roof:shape=round_skillion
|
||
roof:shape=round_hipped
|
||
roof:shape=round_rhombic_pyramidal
|
A very niche shape. Can fall back to roof:shape=round_pyramidal. Should not fall back to roof:shape=rhombic_pyramidal since the silhouette differs significantly.
| |
roof:shape=tented_gabled
|
Rendering may fall back to roof:shape=gabled.
| |
roof:shape=tented_pyramidal + (roof:height=H)
|
Pyramidal roof slopes which curve to a sharp peak. Rendering could fall back to roof:shape=pyramidal.
| |
roof:shape=rhombic_pyramidal + (roof:height=H) + (roof:gable:height=h)
|
By default the gable height is 50% of the roof height, resulting roof sides in the shape of a rhombus. See also pyramidal.
| |
roof:shape=dome + (roof:height=H) + (roof:radius=R)
|
roof:shape=dome is part of the OSM-4D roof table.
Algorithm sketch: (1) if no H is specified assume that it is equivalent to the height of one | |
roof:shape=sail_dome + (roof:height=H) + (roof:sides=k)
|
Default value for roof:sides=* is 4.
This shape is called | |
roof:shape=gambrel
|
Should there be a tag for determining at which height the kink lies? | |
roof:shape=mansard
|
Should there be a tag for determining at which height the kink lies? | |
roof:shape=bell + (roof:height=H) + (roof:sides=k)
|
Sometimes also called ogee roofs. See | |
roof:shape=onion + (roof:radius=R) + (roof:radius:base=r) + (roof:height=H) + (roof:sides=k)
|
Algorithm sketch: (1) if no H is specified assume that it is equivalent to the height of one building:level=* (2) find the barycentre B of the enclosing polygon; (3) if R is not specified use the smallest distance from the barycentre to a corner of the polygon; (4) if no r is specified assume that it is 85% of R; (5) draw a k-sided onion centred at B of height H which has r at its base and R at its widest point. 3D-renderers may choose to ignore k entirely and use a fixed percentage of H for h.
|
Composite roof shapes
| Example | Tagging | Comments |
|---|---|---|
roof:shape=catslide for the main building, two building parts with roof:shape=gabled and roof:shape=skillion respectively for the actual roof shape.
|
Houses with catslide roofs are sometimes called roof:shape=saltbox has ambiguous usage in OpenStreetMap.
| |
| TODO | roof:shape=gabled + roof:iterations=*
|
Possibly roof:shape=iterated_gabled instead.
|
Worked examples
| Example | Tagging |
|---|---|
roof:shape=gabled for the main part. roof:shape=skillion for the side part. roof:shape=pyramidal for the roof of the tower.
| |
roof:shape=gabled for the main part. roof:shape=skillion for the side part. roof:shape=pyramidal for the roof of the tower.
| |
| TODO | |
Roof details
finial=* could be used to tag finials of buildings, for examples a cross at the top of a church with finial=cross.
Weird roofs

Roofless Church, New Harmony, Indiana, USA
Canada Place, Vancouver, Canada
Scandinavium, Göteborg, Sweden
Elbphilharmonie, Hamburg, Germany




![[W]](https://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Wikidata-logo.svg/24px-Wikidata-logo.svg.png)