Simple 3D buildings

From OpenStreetMap Wiki
(Redirected from Simple3DBuildings)
Jump to: navigation, search
Available languages — Simple 3D buildings
· Afrikaans · Alemannisch · aragonés · asturianu · Aymar aru · azərbaycanca · Bahasa Indonesia · Bahasa Melayu · bamanankan · 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î · Latina · latviešu · Lëtzebuergesch · lietuvių · Limburgs · magyar · Malagasy · Malti · Nederlands · Nedersaksies · norsk · norsk nynorsk · occitan · Oromoo · oʻzbekcha/ўзбекча · Plattdüütsch · polski · português · română · shqip · slovenčina · slovenščina · Soomaaliga · suomi · svenska · Tagalog · Tiếng Việt · Türkçe · Türkmençe · Vahcuengh · vèneto · walon · Wolof · Yorùbá · Zazaki · isiZulu · српски / srpski · авар · Аҧсшәа · башҡортса · беларуская · български · қазақша · Кыргызча · македонски · монгол · русский · тоҷикӣ · українська · Ελληνικά · Հայերեն · ქართული · नेपाली · भोजपुरी · मराठी · संस्कृतम् · हिन्दी · অসমীয়া · বাংলা · ਪੰਜਾਬੀ · ગુજરાતી · ଓଡ଼ିଆ · தமிழ் · తెలుగు · ಕನ್ನಡ · മലയാളം · සිංහල · བོད་ཡིག · ไทย · မြန်မာဘာသာ · ລາວ · ភាសាខ្មែរ · ⵜⴰⵎⴰⵣⵉⵖⵜ · አማርኛ · 한국어 · 日本語 · 中文(简体)‎ · 中文(繁體)‎ · 吴语 · 粵語 · ייִדיש · עברית · اردو · العربية · پښتو · سنڌي · فارسی · ދިވެހިބަސް

This page describes tags for basic 3D attributes of buildings. For a proposal for 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: 1) building outlines for the most general area of a complex building and 2) building parts to describe sections of the building, especially those with different height or other attributes.

How to Map

Building outlines

Two building:part areas (green) within a building area (red)

The building outline represents the area of land covered by the union of all parts of the building. The outline may in most cases also be considered the building footprint. This is a closed way or multipolygon tagged with building=*.

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

The building outline provides backward compatibility for 2D rendering software, such as Mapnik, and other data consumers not interested in 3D modeling. When a building has any building:part=* areas, the building outline is not considered for 3D rendering.

Building parts

Parts of a building that have differing physical characteristics (height, color, etc) are usually modeled by drawing an area within the building outline tagged with the building:part=* tag. The value of the building:part=* tag is usually yes, but it can be any building=* value.

The entire building outline is filled with building:part=* ways, 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.)

See the following section for building attribute tags typically applied to ways tagged with building:part=*.

Ways tagged with building:part=* are mainly considered for 3D rendering. 2D renderers ignore the building attribute tags described in the following section.

Building relations

If at least one part of a building is hanging over the building footprint or if the building has a complex structure with lots of parts, a type=building relation can be used to group the building outline and all building parts together. Otherwise, there is no need to create a type=building relation, i.e. simply position all building parts inside the building outline as described above.

If the type=building relation is present for a building, all building parts must be listed as the relation members with the role part. The building outline must be listed with the role outline. The building parts can be located in any possible way (inside, outside, intersecting, touching) relative to the building outline in the presence of the type=building relation.

If there is no type=building relation, an application should treat all building parts within the area of the building outline as part of that building.

Tagging for building outlines and parts

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

Height and levels

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 a height tag!

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

Roof

Roof shape

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

Other roof tags

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. Height of the building up to the roof is height - roof:height.
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 modeled with the simple techniques described on this page.

Surface color and material

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

Demo areas

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

Edit this table

Location OpenStreetMap OSM2World OSMBuildings F4 Map OpenScienceMap OSM go Mapbox GL Tangram Blicky
Greece Athena View in 2D N/A View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Germany Bremen View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
United States Chicago View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
United States Cincinnati View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Germany Coburg View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Austria Graz View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Austria Graz 2 View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Austria Graz 3 View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Germany Hagen View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Finland Helsinki View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Spain Huesca View in 2D N/A View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Germany Karlsruhe, Fernmeldeturm View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Iceland Kópavogur, Smárar View in 2D N/A View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Germany Köln, Dom View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Germany Köln, Funkturm View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Germany Köln, Rheinauhafen View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Germany Köln, Wohngebiet in Neuehrenfeld als "Labor" View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Germany Köthen View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Germany Köthen 2 View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Poland Kraków View in 2D N/A View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
United States Las Vegas View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Germany Leipzig View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
United Kingdom London View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Poland Lwówek Śląski View in 2D N/A View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Russia Moscow View in 2D N/A View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Russia Moscow 2

with type=building relation

View in 2D N/A View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
United States New York City View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
France Paris, Eiffel Tower View in 2D N/A View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Germany Passau View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
United States Phoenix (Arizona) View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Netherlands Rijswijk View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Germany Rostock, Südstadt View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
United States San Jose (California) View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Brazil São Paulo View in 2D N/A View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Germany Schwerin View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Singapore Singapore View in 2D N/A View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Germany Stadum View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
United States Syracuse (New York) View in 2D View in 3D View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Japan Tokyo, Nishi-shinjuku View in 2D N/A View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Japan Tokyo, Odaiba View in 2D N/A View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Canada Toronto View in 2D N/A View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Norway Trondheim View in 2D N/A View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Poland Warsaw View in 2D N/A View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D
Venezuela Ciudad Guayana View in 2D N/A View in 3D View in 3D View in 3D

View in 3D Drive in 3D Fly in 3D

View in 3D View in 2.5D View in 3D

Example Models

Software support

Main article: 3D development

Many maps and tools support the simple 3D buildings schema. Among the first were the OSM-3D.org renderer in 2009, the OSM2World renderer and Kendzi3D JOSM plugin in 2011, and the Nutiteq Android 3D Mapping SDK (now Carto Mobile SDK) and WikiMiniAtlas in 2012. OSMBuildings launched a 2.5D display in 2012, followed by a 3D version in 2015. In 2013, F4 Map became the first renderer to fully support the simple 3D buildings schema.

Editing tools

Software name Platform Schema support License Notes
Kendzi3d Windows, macOS, Linux yes BSD JOSM plugin
SketchOSM Windows partial Proprietary SketchUp plugin in beta

Map applications

Application name Platform Schema support License Notes
CartoType Maps App Windows, Linux, Macintosh partial Proprietary but unrestricted use A free demonstration application for the proprietary CartoType library. The CartoType GL version implements most roof shapes. Includes a style sheet editor.
F4 Map Web yes Proprietary Demo Web Map with rendering and scene support
Mapbox Static API Web partial BSD Requires a free Mapbox Studio account.
OpenScienceMap Web partial LGPL Interprets only height/min_height tags client-side. The S3DB Layer uses vtm meshes generated on the server (using plpgsql with PostGIS and SFCGAL). Web map
OSG-Maps Android partial Proprietary
OSM2World Web partial LGPL Currently implementing the remaining features for the 0.2.0 release - slippymap (Germany only)
OSM-3D.org Web partial see OSM-3D#Buildings
osmapa.pl Mapnik stylesheet Web partial most roof types implemented in 2.5D view
OSMBuildings Web partial BSD
OSM go Web partial GPL Only pyramidal and dome (yet, flat is default)
WikiMiniAtlas Web partial GPL only pyramidal roofs

Map frameworks

Main article: Frameworks
Software name Platform Language Schema support License Notes
Carto Mobile SDK Android, iOS, Windows Phone Java, Objective-C++, Swift, C# partial BSD most roof shapes supported; see Carto's documentation
CartoType for Android Android Java partial Proprietary Most roof shapes supported.Styles can be controlled using CartoType's XML style sheets. Uses OpenGL ES graphics acceleration. Viewing angle, height, field of view, etc., can be modified.
CartoType for iOS iOS Objective C, Swift
CartoType for C++ Windows, Linux, OS X (Macintosh) C++
CartoType for .NET Windows C#, VB.NET and other .NET languages
CartoType for Qt Qt on Windows, Mac (OS X) and Linux C++
Mapbox GL JS Web JavaScript partial BSD Options for customizing 3D building display are included in the Mapbox Style Specification. (See Mapbox's blog post announcing GL JS support.)
Mapbox Android SDK Android Java
Mapbox iOS SDK iOS Objective-C, Swift, Interface Builder
Mapbox macOS SDK macOS Objective-C, Swift, Interface Builder, AppleScript
Mapbox Qt SDK Qt C++, QML
Mapbox Unity SDK Cross-platform C# Apache
node-mapbox-gl-native Node.js JavaScript BSD
osm2x3d Web partial Unknown see also [1] and [2]
OSMBuildings Web JavaScript partial BSD 2.5D and 3D versions available
Tangram Web JavaScript partial MIT Mapzen renders 3D buildings in Tangram and other products
Tangram ES Android, iOS, Linux, macOS C++
VTM Android, iOS, Web Java partial LGPL Part of the mapsforge project.

Design tools

Software name Platform Schema support License Description
blender-osm Windows, macOS, Linux partial GPL 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.
Mapbox Studio Web partial Proprietary Includes a Mapbox GL style editor that supports building (part) heights.
Maputnik Web partial MIT A Mapbox GL style editor that supports building (part) heights.
Tangram Play Web partial MIT A Tangram scene editor that supports extruded buildings with heights based on OSM data.

Terminology

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

An image can help to understand some architectural terms.

Related Proposals

  • F3DB (Full 3D buildings)