User:AlephNull/roofs

From OpenStreetMap Wiki
Jump to navigation Jump to search

Personal collection of various roof shapes and ideas for how to map them. For current community consensus see Simple 3D Buildings. See also the 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=*

Default/implicit is roof=yes.

Ruins of Siyagha Monastery at [W] Mount Nebo, Jordan
Abandoned hut on Thornton Moor

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=*

Images are shown as small previews to keep the page responsive; click through for larger Wikimedia file pages.

Atomic roof shapes

Example Tagging Comments
Gabled roof example roof:shape=gabled + (roof:orientation=*) Prototypical roof form. Already a very established tag. See [W] gable roof.
Flat roof example roof:shape=flat Common modern roof form. Already a very established tag. See [W] flat roof.
Hipped roof example roof:shape=hipped + (roof:height=H) Common roof form. Already an established tag. See [W] hip roof.
Half-hipped roof example roof:shape=half-hipped + (roof:levels=*) + (roof:height=H) Typical values of roof:levels=* might be 1/1.5/2. See [W] hip roof. Basic renderers may fall back to hipped.
Butterfly roof example 1 Butterfly roof example 2 roof:shape=butterfly + (roof:height=H) Dual of roof:shape=gabled.
Pyramidal roof example 1 Pyramidal roof example 2 roof:shape=pyramidal + (roof:height=H)
Round gabled roof example 1 Round gabled roof example 2 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 [W] barrel roof.
Round pyramidal roof example 1 Round pyramidal roof example 2 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 [W] cloister vault which covers 4-sided domical vaults.

Alternative tag name roof:shape=domical

Round skillion roof example roof:shape=round_skillion
Round hipped roof example roof:shape=round_hipped
Round rhombic pyramidal roof example 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.
Tented gabled roof example 1 Tented gabled roof example 2 roof:shape=tented_gabled Rendering may fall back to roof:shape=gabled.
Tented pyramidal roof example 1 Tented pyramidal roof example 2 roof:shape=tented_pyramidal + (roof:height=H) Pyramidal roof slopes which curve to a sharp peak. Rendering could fall back to roof:shape=pyramidal.
Rhombic pyramidal roof example 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 [W]rhombic roof. Basic renderers may want to fall back to pyramidal.
Dome roof example 1
Dome roof example 2
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 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) draw a dome of radius R and height H over the barycentre.

Sail dome roof example roof:shape=sail_dome + (roof:height=H) + (roof:sides=k) Default value for roof:sides=* is 4.

This shape is called roof:shape=dome_overlapped in the the OSM-4D roof table.

Gambrel roof example roof:shape=gambrel Should there be a tag for determining at which height the kink lies?
Mansard roof example roof:shape=mansard Should there be a tag for determining at which height the kink lies?
Bell roof example roof:shape=bell + (roof:height=H) + (roof:sides=k) Sometimes also called ogee roofs. See [W] bell roof.
Onion dome roof example 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
Catslide roof example 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 [W] saltbox houses, but roof:shape=saltbox has ambiguous usage in OpenStreetMap.
TODO roof:shape=gabled + roof:iterations=* Possibly roof:shape=iterated_gabled instead.

Worked examples

Example Tagging
Église Notre-Dame in Antigny
Église Notre-Dame in [W] Antigny.
roof:shape=gabled for the main part. roof:shape=skillion for the side part. roof:shape=pyramidal for the roof of the tower.
Chapel roof example roof:shape=gabled for the main part. roof:shape=skillion for the side part. roof:shape=pyramidal for the roof of the tower.
Church roof example TODO
Laayoune Cathedral roof example
Arkadi Monastery roof example
Saint Anne, Olesno roof example
[W]Saint Anne, Olesno, Poland

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