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

Atomic roof shapes

Example Tagging Comments
roof:shape=gabled + (roof:orientation=*) Prototypical roof form. Already a very established tag. See [W] gable roof.
roof:shape=flat Common modern roof form. Already a very established tag. See [W] flat roof.
roof:shape=hipped + (roof:height=H) Common roof form. Already an established tag. See [W] hip roof.
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.
roof:shape=butterfly + (roof:height=H) Dual of roof:shape=gabled.
Pavilion in the Bamberg Grove 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 [W] barrel roof.
Main dome of the Great Synagogue of Rome. 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

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 [W]rhombic roof. Basic renderers may want to fall back to 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 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.

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.

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 [W] bell roof.
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 [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 [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.
TODO
roof:shape=conical for the hall, roof:shape=pyramidal for the tower, roof:shape=flat for the connection between them
[W]Saint Anne, Olesno, Poland

Weird roofs

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