From OpenStreetMap Wiki
Jump to navigation Jump to search
Public-images-osm logo.svg roof:shape
Roof4 0.jpg
屋顶形状类型 编辑此说明
组: 属性
已记载的值: 22






Roof shape

You can characterize the roof shape of a building using a catalogue of well-known roof types.

Image Roof Flat.png Roof Gabled.png Roof Gabled Height Moved.png Roof Hipped.png Roof Half Hipped.png Roof Hip and Gable.png Roof Side Hipped.png Roof Side Half Hipped.png
roof:shape flat gabled gabled_height_moved hipped half-hipped hipped-and-gabled side_hipped side_half-hipped
Image Roof Butterfly.png Roof Crosspitched.png Roof Gambrel.png Roof Mansard.png Roof Pyramidal.png Roof Sawtooth.png Roof Skillion.png
roof:shape butterfly crosspitched gambrel mansard pyramidal sawtooth skillion
Image Roof Cone.png Roof Dome.png Roof Onion.png Roof Round.png
roof:shape cone dome onion round
Other common values
Value Comment
many Marks that building has multiple different roof shapes at once. It is discouraged to use it because it is useless for rendering (roofs with this value are rendered as flat). Instead, use building:part=* carrying own roof:shape values. History described in detail in roof:shape=many.

Other roof tags

Key Comment
roof:height=* Height of the roof, from the top of the facades to the top of the roof.

See the section below for a good understanding of this tag and the usage of height, building:levels and roof:levels.

roof:levels=* Number of specific floors within the roof only.

See the section below for a good understanding of this tag and the usage of height, roof:height and building:levels.

roof:angle=* Alternatively to roof:height=*, roof height can be indicated implicitly by providing the inclination of the sides (in degrees).
roof:direction=* Direction from back side of roof to front, i.e. the direction towards which the main face of the roof is looking.
roof:orientation=along/across For roofs with a ridge, the ridge is assumed to be parallel to the longest side of the building (roof:orientation=along). But it can be tagged explicitly with this tag.
roof:colour=* The (dominant) colour of the roof. Useful in conjunction with roof:material=*.
roof:material=* The outermost material of the roof. Useful in conjunction with roof:colour=*.

Usage of height, roof:height, building:levels, roof:levels

There is currently an incompatibility between the meaning of the tags *:levels in 2D and 3D representations.

In 2D, they designate the number of floors of the part: 1 floor, 2 floors... 5 floors, etc.

In 3D, when height tags are not used, the tags *:levels, in the 3D rendering, are converted to simulated heights. Each floor is converted into a 3 meters high rendering.

For example, building:levels=3, roof:levels=1, no tag height=*, no tag roof:height=* will be converted in the 3D rendering into a 12 meters height building with 9 meters under the roof and 3 meters for the roof.

Therefore users can used decimal numbers for levels to have a good height. For example, in taginfo, you can find building:levels=1.5, roof:levels=0.5 or roof:levels=0.2! But what does "0.2 floor" mean in a 2D description of the building?

Rather than using decimal values, add the building heights. You will thus have compatibility between 2D and 3D information.



  • 1.5 building levels and 0.7 roof levels probably mean 1 useful floor for the building facades and no useful floors for the roof
  • 1.5 + 0.7 = 2.2 floors in total = a height of 6.6 meters for the entire building (using 3 meters for each floor)
  • 0.7 roof floor = a height of 2.1 meters for the roof


  • actual building heights are likely unknown for 99% of buildings in OSM. The value 3 meters for a floor is a default value, probably very close to reality for most of these buildings, and will display a good 3D rendering consistent with buildings without height tags. But of course if you know the real heights, use them!
  • in some cases both are clearly necessary. For example for a sports hall, the building levels value is usually one (one floor and one ceiling) but the height is higher than the default 3 meters, so you need to add the actual height (for example building:levels=1, height=6). Please do not use a false 2 levels value to simulate a 6 meters high building if the building only has 1 ceiling!

This section is a wiki template, editable here.