Zh-hant:Simple 3D Buildings
本頁會介紹如何用標籤反映建築物的基本3D屬性。要參考更詳盡的3D標籤方式的話可參考F3DB提案。
此頁介紹的標籤方法是從2nd 3D Workshop Garching工作坊所匯聚的成果,並獲得大部分3D開發者同意在他們的程式中支持的一套統一的標籤方式的子集。基本上這裡會用兩種方式來描述一座建築物的體積,包括:1.) 用複數的外框線來描述複雜建築物大體上的外形的,還有2.) 用建築物的分部(building parts)來描述建築物的不同部分,特別是有不同高度或者其他屬性的特別部分。
繪製的方法
建築物外框線
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.
建築物的分部
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.
Tip: Overlapping shapes like this can be tricky to select. In JOSM, click while holding down 'Alt' key to cycle through overlapping objects and make the selection you want. (from https://blog.mapbox.com)
建築物的關係
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.
建築物外框線和分部的標籤方法
The following tags can be used on both building outlines and building parts.
高度與層數
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 |
屋頂
屋頂的形狀
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 | ||||||
---|---|---|---|---|---|---|
roof:shape | flat | skillion | gabled | half-hipped | hipped | pyramidal |
Image | ||||||
---|---|---|---|---|---|---|
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=* | The height of the building (i.e. the height of the façade) is calculated as the building's total height=* minus 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.
表面顏色與物料
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. |
3D例子
To view numerous 3D buildings on a large scale, see examples here: 3D Demo Areas
To view individual 3D buildings, see examples here: 3D Building Examples
軟件支援
- 主條目: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.
編輯工具
Software name | Platform | Schema support | License | Notes |
---|---|---|---|---|
Kendzi3d | Windows, macOS, Linux | 是 | BSD | JOSM plugin |
SketchOSM | Windows | 部分的 | Proprietary | SketchUp plugin in beta |
地圖程式
Application name | Platform | Schema support | License | Notes |
---|---|---|---|---|
CartoType Maps App | Windows, Linux, Macintosh | 部分的 | 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 | 是 | Proprietary | Demo Web Map with rendering and scene support |
Mapbox Static API | Web | 部分的 | BSD | Requires a free Mapbox Studio account. |
OpenScienceMap | Web | 部分的 | 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 | 部分的 | Proprietary | |
OSM2World | Web | 部分的 | LGPL | Currently implementing the remaining features for the 0.2.0 release - slippymap (Germany only) |
OSM-3D.org | Web | 部分的 | see OSM-3D#Buildings | |
osmapa.pl Mapnik stylesheet | Web | 部分的 | most roof types implemented in 2.5D view | |
OSMBuildings | Web | 部分的 | BSD | |
OSM go | Web | 部分的 | GPL | Only pyramidal and dome (yet, flat is default) |
WikiMiniAtlas | Web | 部分的 | GPL | only pyramidal roofs |
地圖開發框架
- 主條目:Frameworks
Software name | Platform | Language | Schema support | License | Notes |
---|---|---|---|---|---|
Carto Mobile SDK | Android, iOS, Windows Phone | Java, Objective-C++, Swift, C# | 部分的 | BSD | most roof shapes supported; see Carto's documentation |
CartoType for Android | Android | Java | 部分的 | 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 | 部分的 | 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 | 部分的 | Unknown | see also [1] and [2] | |
OSMBuildings | Web | JavaScript | 部分的 | BSD | 2.5D and 3D versions available |
Tangram | Web | JavaScript | 部分的 | MIT | Mapzen renders 3D buildings in Tangram and other products |
Tangram ES | Android, iOS, Linux, macOS | C++ | |||
VTM | Android, iOS, Web | Java | 部分的 | LGPL | Part of the mapsforge project. |
設計工具
Software name | Platform | Schema support | License | Description |
---|---|---|---|---|
blender-osm | Windows, macOS, Linux | 部分的 | 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 | 部分的 | Proprietary | Includes a Mapbox GL style editor that supports building (part) heights. |
Maputnik | Web | 部分的 | MIT | A Mapbox GL style editor that supports building (part) heights. |
Tangram Play | Web | 部分的 | MIT | A Tangram scene editor that supports extruded buildings with heights based on OSM data. |
專有名詞
An image can help to understand some architectural terms.
相關提案
- F3DB (Full 3D buildings)