Simple 3D buildings

From OpenStreetMap Wiki
(Redirected from Simple 3D Buildings)
Jump to: navigation, search
Available languages — Simple 3D buildings
· Afrikaans · Alemannisch · aragonés · asturianu · azərbaycanca · Bahasa Indonesia · Bahasa Melayu · Bân-lâm-gú · Basa Jawa · Basa Sunda · Baso Minangkabau · bosanski · brezhoneg · català · čeština · corsu · dansk · Deutsch · eesti · English · español · Esperanto · estremeñu · euskara · français · Frysk · Gaeilge · Gàidhlig · galego · Hausa · hrvatski · Igbo · interlingua · Interlingue · isiXhosa · isiZulu · íslenska · italiano · Kiswahili · Kreyòl ayisyen · kréyòl gwadloupéyen · Kurdî · latviešu · Lëtzebuergesch · lietuvių · magyar · Malagasy · Malti · Nederlands · Nedersaksies · norsk bokmål · norsk nynorsk · occitan · Oromoo · oʻzbekcha/ўзбекча · Plattdüütsch · polski · português · română · shqip · slovenčina · slovenščina · Soomaaliga · suomi · svenska · Tiếng Việt · Türkçe · Vahcuengh · vèneto · Wolof · Yorùbá · Zazaki · српски / srpski · беларуская · български · қазақша · македонски · монгол · русский · тоҷикӣ · українська · Ελληνικά · Հայերեն · ქართული · नेपाली · मराठी · हिन्दी · भोजपुरी · অসমীয়া · বাংলা · ਪੰਜਾਬੀ · ગુજરાતી · ଓଡ଼ିଆ · தமிழ் · తెలుగు · ಕನ್ನಡ · മലയാളം · සිංහල · བོད་ཡིག · ไทย · မြန်မာဘာသာ · ລາວ · ភាសាខ្មែរ · ⵜⴰⵎⴰⵣⵉⵖⵜ ⵜⴰⵏⴰⵡⴰⵢⵜ‎ · አማርኛ · 한국어 · 日本語 · 中文(简体)‎ · 吴语 · 粵語 · 中文(繁體)‎ · ייִדיש · עברית · اردو · العربية · پښتو · سنڌي · فارسی · ދިވެހިބަސް

This page describes tags for basic 3D attributes of buildings. For proposition of advanced 3D tagging see F3DB.

The following tagging methods are results of the 2nd 3D Workshop Garching, where most 3D developers agreed on supporting a unified subset of tags in their programs. Basically we describe the volume of a building using two types of areas. Building outlines for the most general area of a complex building and building parts, to describe esp. parts with different height or other attributes.

Building outline

Two building:part areas within a building area

The building outline is a closed way or multipolygon tagged with building=*. It represents the area of land covered by the union of all parts of the building. The outline is also referred to as the building footprint.

Building attributes (e.g., address, name, overall height, operator, etc.) must be tagged on the building outline.

The building outline provides backward compatibility for 2-D rendering software, such as Mapnik, and other data consumers not interested in 3D modelling. 2-D renderers ignore the building:part=* tags described in the following sections.

Building parts

Buildings with differing physical characteristics (e.g. heights) are modeled with the building:part=* tag. The value of the building:part=* tag is usually yes, but it can be any building=* value.

Note that a building outline area containing OSM ways or relations tagged with building:part=* is not considered for 3D rendering.

Cover the whole building outline with building:part=* areas, tagged with their respective height and other attributes. These areas may overlap each other or may be disjunct, depending on the building. (But while 2D footprints can and often need to overlap, avoid overlapping 3D volumes – especially if the volumes have common faces.)

Building relation

A relation tagged with type=building groups building outline and all building parts together. It is highly recommended to use the relation if there is at least one building part. Otherwise an application has to fall back to search for building parts only within the area of the building outline. See also ProposedRoofLines#Building_Relation for proposals of further details.

Tags for buildings outlines and parts

The following tags can be used on both building outlines and building parts.


schematic example of level and height tagging
Key Comment
height=* Distance between the lowest possible position with ground contact and the top of the roof of the building, excluding antennas, spires and other equipment mounted on the roof.
min_height=* Approximate height below the building structure.

Note that when min_height is used, height is still defined as the distance from the ground to the top of the structure. So "bridge" with 3 meters height, where bottom part of the bridge is positioned 10 meters above ground level will have min_height=10, height=13.

building:levels=* Number of floors of the building above ground (without levels in the roof), to be able to texture the building in a nice way.

If you tag new buildings, try to give a height value. Try to use building:levels=* only in addition to an height tag!

building:min_level=* levels skipped in a building part, analogous to min_height


You can characterize the building roof using a catalogue of well known roof types. Additional roof shapes may be introduced later (S3DB_Proposals), including advanced approaches for manual modelling (e.g., ProposedRoofLines or parts of OSM-4D/Roof_table).

Image Roof0 0.jpg Roof1 0.jpg Roof2 0.jpg Roof2 3.jpg Roof2 4.jpg Roof2 5.jpg
roof:shape flat skillion gabled half-hipped hipped pyramidal
Image Roof4 0.jpg Roof4 2.jpg Roof5 6.jpg Roof8.jpg Roof5 0.jpg Roof3 1.jpg
roof:shape gambrel mansard dome onion round saltbox

Key Comment
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:height=* roof height in meters
roof:angle=* Alternatively to roof:height=*, roof height can be indicated implicitly by providing the inclination of the sides (in degrees).
roof:levels=* Number of floors within the roof, which are not already counted in building:levels=*.
roof:direction=* direction from back side of roof to front, i.e. the direction towards which the main face of the roof is looking

Again, some roofs (e.g., square buildings) cannot be accurately modelled with the simple techniques described on this page.


Key Comment
building:colour=* Colour of the building facade. See colour=* for possible values.
roof:colour=* Colour of the building roof. See colour=* for possible values.
building:material=* Outer material for the building facade.
roof:material=* Outer material for the building roof.

Demo areas

3D examples

To make it as easy as possible for the community, we started added details already to the following:

Location OpenStreetMap (2D) OSM2World (3D) OSMBuildings (3D) F4 Map(3D) OpenScienceMap osm2x3d (x3d) OSM_go (3D)
Passau (GER) Link Link Link Link Link Link Go
Graz (AT) Link2 Link2 Link2 Link2 Link2 Link2 Go2
Rostock Südstadt (GER) Link Link Link Link Link Link
Hagen (GER) Link Link Link Link Link Link
Karlsruhe(GER) Link Link Link Link Link Link Go
Scai's Tower (GER) Link Link Link Link Link Link Go
Eiffel tower/Paris (FR) Link Link Link Link Link Link
Köthen (GER) Link2 Link2 Link2 Link2 Link2 Link 2
Coburg (GER) Link Link Link Link Link Link Go
Las Vegas (US) Link Link Link Link Link Link Go
London (GB) Link Link Link Link Link Link Go
New York (US) Link Link Link Link Link Link Go
Phoenix (US) Link Link Link Link Link Link
Syracuse (US) Link Link Link Link Link Link
Leipzig (GER) Link Link Link Link Link Link
Bremen (GER) Link Link Link Link Link Link
Schwerin (GER) Link Link Link Link Link Link
Chicago (US) Link Link Link Link Link Link
Helsinki (FIN) Link Link Link Link Link Link
Warszawa (PL) Link (no rendering) Link Link Link Link
Kraków (PL) Link Link Link Link Link
Moscow(RU) Link Link Link Link Link
Batticaloa(Sri Lanka) Link Link Link Link Link
Rijswijk (NL) Link Link Link Link Link

Example Models


Diagram of the main architectural elements that make up a pitched roof

An image can help to understand some architectural terms.

Map Support

There are many maps and tools that support the Simple 3D buildings schema. This is a list of known ones.

Software Name Schema Support Description Creator Open source Programming language
blender-osm Partial One click download and import of OpenStreetMap and terrain. Can import more than 100.000 buildings. A large number of roof shapes is supported: flat, gabled, hipped (for a quadrangle outline only), mono-pitched, half-hipped, round, pyramidal, gambrel, dome, onion and saltbox. vvoovv yes Python
OSM2World Partial Currently implementing the remaining features for the 0.2.0 release - slippymap (Germany only)
Kendzi3d Full JOSM Plugin
OSM-3D Partial see OSM-3D#Buildings
Nutiteq Android 3D mapping SDK Partial most roof shapes supported
WikiMiniAtlas Partial only pyramidal roofs
OSMBuildings Partial JavaScript
OSM go Partial Only pyramidal and dome (yet, flat is default) -karlos- yes JavaScript
F4 Map Full Demo Web Map with rendering and scene support
OpenScienceMap Partial Interprets only height/min_height tags client-side. The S3DB Layer uses vtm meshes generated on the server (using plpgsql with PostGIS and SFCGAL).
OSG-Maps Partial Web map
osm2x3d Partial see also [1] and [2] mapnik stylesheet Partial most roof types implemented
Tangram Partial Mapzen renders 3D buildings in Tangram and other products Mapzen yes
Mapbox GL JS Partial Options for customizing 3D building display are included in the Mapbox Style Specification. (See the blog post announcing GL JS support.) Support in native SDKs (Android, iOS, macOS, Node.js, Qt) is planned. Mapbox yes JavaScript

Related Proposals

  • F3DB (Full 3D buildings)