OSM-3D
From OpenStreetMap Wiki
The OSM-3D project aims at providing an interactive 3D view on OpenStreetMap data. It is currently maintained by the University of Heidelberg, GIScience Group. It is used as a show case to demonstrate the potential of 3D maps as well as how visualization-centric Spatial Data Infrastructures (SDI) can be set up using standardized and open interfaces. The map display goes beyond simply rendering cached tiles that are somehow distorted in order to create a perspective effect. It is based on a scene graph model that incorporates an elevation model and as many OSM features that we could process. This scene graph can be explored using the online viewer XNavigator. Preparing OSM data to be viewed in OSM-3D requires a lot of preprocessing steps which are done on GIScience's servers. The software components are currently not open source, but GIScience provides a documentation of the server interface and a Java applet with an External Authoring Interface.
Project home page: http://www.osm-3d.org
Contents |
Data Availability
As the name implies, all of the map features are imported from OSM. We tried to extract all significant features that can be incorporated into a generic all-purpose 3D map. Since OSM does not provide a landscape model, the height information was imported from another source. The elevation model is derived from SRTM (Shuttle Radar Topography Mission) data kindly provided by CGIAR. CGIAR closed many no-data voids that occured in mountaineous regions and on water surfaces using interpolation techniques. The original SRTM data set was not usable for our terrain triangulation package since it relies on homogenously distributed point. The spatial extent of available data is limited to central Europe (Germany, the Alps, parts of Italy, France, the Netherlands, Switzerland, Austria etc.). However, if hardware resources permit, we will extent the coverage. The combined OSM and SRTM data set is redistributed as Web 3D Service (W3DS). The W3DS is a 3D portrayal service is currently discussed at the Open Geospatial Consortium (OGC) as component for distributing geospatial data encoded in X3D, Collada, KML and other 3D internet standards. It is designed for providing landscape and city models as well as information layers such as POIs and labels. The W3DS for the OSM-3D project has been made available as reference implementation for the OGC standardization process. More information, a test client, and the interface documentation can be found on
http://www.w3ds.org/doku.php?id=osm-3d_w3ds
Map Features
Land coverage and traffic
All landuse, natural, vegetaion and other areas are displayed together with the Digital Elevation Model (DEM). The DEM is computed by the OSM3D DEMTileGenerator process and stored as multiple tile sets in the W3DS data base. Due to the complexity of the DEM computation, the tiles are not generated on demand, but always retrieved from the W3DS data base, which is updated periodically. The sizes of the DEM tiles correspond with the tile sizes as defined by the OSM tile cache. That is, level 0 is covering the whole world, a level 16 tile represents just a small portion of approx. 611x611 meters, which can be shown at larger scales. With each level, the tile size is divided by 2 and the number is quadrupled. Currently, level 7 through level 16 are being processed. All map features that represent physical structures of the earth surface and that can be described by a distinctive surface structure, are rendered as part of the DEM. This applies also to linear features such as the road network, paths, railways, waterways, and such. In this case, a geometrical buffer (Hausdorff distance around the lines) is applied to them in order to display them as part of the DEM. The buffer width increases with the tile size, since otherwise, these features would quickly disappear in the distance if only the "original", i.e. estimated real width would be taken.
The following table summarizes all land coverage, natural, and road features that are currently extracted from OSM and served by the W3DS. The values in the Buffer / Tile Level columns indicate whether or not the feature is selected for the specific tile level. Zero values mean that the feature is selected although no buffer is applied, since it's a polygon feature. Positive values describe the buffer width in meters (to both sides of the line, thus the actual feature width is twice this value).
| Key | Value | Element | Color | Buffer / Tile Level | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | ||||
| Natural | |||||||||||||
| natural | coastline | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| natural | beach | | 0 | 0 | 0 | 0 | 0 | 0 | |||||
| natural | cliff | | 0 | 0 | 0 | 0 | 0 | 0 | |||||
| natural | wetland | | 0 | 0 | 0 | 0 | 0 | 0 | |||||
| natural | marsh | | 0 | 0 | 0 | 0 | 0 | 0 | |||||
| natural | mud | | 0 | 0 | 0 | 0 | 0 | 0 | |||||
| natural | scree | | 0 | 0 | 0 | 0 | 0 | 0 | |||||
| natural | fell | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| natural | glacier | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| natural | heath | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| natural | scrub | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| natural | water | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||
| natural | land | | 0 | 0 | 0 | 0 | 0 | ||||||
| Landuse | |||||||||||||
| landuse | allotments | | 0 | 0 | 0 | ||||||||
| landuse | cemetery | | 0 | 0 | 0 | 0 | 0 | ||||||
| landuse | commercial | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| landuse | farm | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| landuse | farmland | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| landuse | farmyard | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| landuse | grass | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| landuse | greenfield | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| landuse | recreation_ground | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| landuse | vineyard | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| landuse | forest | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| landuse | industrial | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| landuse | meadow | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| landuse | quarry | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| landuse | residential | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| landuse | retail | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| landuse | village_green | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| landuse | wood | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| landuse | railway | | 0 | 0 | 0 | 0 | 0 | 0 | |||||
| landuse | construction | | 0 | 0 | 0 | 0 | 0 | ||||||
| landuse | landfill | | 0 | 0 | 0 | 0 | 0 | ||||||
| landuse | brownfield | | 0 | 0 | 0 | 0 | 0 | ||||||
| Leisure | |||||||||||||
| leisure | park | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| leisure | water_park | | 0 | 0 | 0 | 0 | |||||||
| Waterway | |||||||||||||
| waterway | riverbank | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||
| waterway | river | | 10 | 15 | 22,5 | 33,75 | 50,625 | 75,9375 | 113,90625 | 170,859375 | 256,2890625 | ||
| waterway | canal | | 15 | 22,5 | 33,75 | 50,625 | 75,9375 | 113,90625 | 170,859375 | ||||
| waterway | stream | | 5 | 7,5 | 11,25 | 16,875 | |||||||
| Place | |||||||||||||
| place | island | | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||
| Aeroway | |||||||||||||
| aeroway | taxiway | | 18,5 | 18,5 | 18,5 | 18,5 | 18,5 | ||||||
| aeroway | runway | | 30 | 30 | 30 | 30 | 30 | 30 | |||||
| Highway | |||||||||||||
| highway | motorway | | 9,5 | 14,25 | 21,375 | 32,0625 | 48,09375 | 72,140625 | 108,2109375 | 162,3164063 | 243,4746094 | ||
| highway | motorway_link | | 4,025 | 6,0375 | 9,05625 | 13,584375 | 20,3765625 | 30,56484375 | |||||
| highway | trunk | | 7,5 | 11,25 | 16,875 | 25,3125 | 37,96875 | 56,953125 | 85,4296875 | 128,1445313 | 192,2167969 | ||
| highway | trunk_link | | 4,025 | 6,0375 | 9,05625 | 13,584375 | 20,3765625 | 30,56484375 | |||||
| highway | primary | | 6,4 | 9,6 | 14,4 | 21,6 | 32,4 | ||||||
| highway | primary_link | | 2,6 | 3,9 | 5,85 | 8,775 | |||||||
| highway | secondary | | 4 | 6 | 9 | 13,5 | |||||||
| highway | secondary_link | | 2,5 | 3,75 | 5,625 | 8,4375 | |||||||
| highway | tertiary | | 3,75 | 5,625 | 8,4375 | ||||||||
| highway | unclassified | | 3 | 4,5 | |||||||||
| highway | residential | | 3,75 | 5,625 | 8,4375 | ||||||||
| highway | living_street | | 3 | 4,5 | |||||||||
| highway | service | | 3 | 4,5 | |||||||||
| highway | track | | 3 | 4,5 | |||||||||
| highway | pedestrian | | 4 | 6 | |||||||||
| highway | path | | 3 | 4,5 | |||||||||
| highway | cycleway | | 2 | 3 | |||||||||
| highway | footway | | 1,5 | 2,25 | |||||||||
| Railway | |||||||||||||
| railway | rail | | 3 | 4,5 | 6,75 | 10,125 | 15,1875 | ||||||
This table is a wiki template with a default description in English. Editable here.
Buildings
Buildings are rendered as polyherda, extruded footprints with flat roofs. The base height is interpolated from the DEM. In OSM, buildings are stored as relations, with an outer ring and 0..n inner rings for courtyards. Inner rings are processed correctly, they are displayed as holes in the polyhedron. Outer rings consisting of more than one way cannot be processed. The bottom and the top are flat. In some cases buildings on steep hillsides cause problems and parts become hanging over the ground. For this reason, walls should not be tagged as buildings. Mostly, height information is not available, so that we have to use a fixed height value, with some random deviation added. If available, the following tags can be used in order to obtain realistic heights:
| Key | Description | Example values | Notes |
|---|---|---|---|
| building:height | Approximate height (Roof, not antenna or spire for skyscrapers by default) | By default : meter. For use in 3D apps
Includes well-known abbreviation of a length measure | |
| building:levels | Number of stories of the building | 50 |
The availability of one of these tags is indicated by antique white facade color in contrast to the otherwise light gray color.
Please see Building_attributes for a list of recommended building attributes that could be very helpful in achieving realistic city models in the future.
Points of Interest
Points of Interest (POI) are displayed as 3D boxes with the symbol as texture and a text label. POIs are organized in the following layers:
- Money
- Public Facilities
- Health
- Shop
- Traffic
- Eating
- Enjoyment
- Education
- Public Transport
- Post
- Accomodation
Money
| Key | Value | Element | Rendering | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|---|
| amenity | atm | | amenity | bank | | ||
| amenity | bureau_de_change | |
This table is a wiki template with a default description in English. Editable here.
Public Facilities
| Key | Value | Element | Rendering | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|---|
| amenity | telephone | | amenity | toilets | | ||
| amenity | courthouse | | amenity | police | | ||
| amenity | public_building | | amenity | townhall | | ||
| amenity | fire_station | | amenity | place_of_worship | | ||
| tourism | information | |
This table is a wiki template with a default description in English. Editable here.
Health
| Key | Value | Element | Rendering | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|---|
| amenity | hospital | | amenity | pharmacy | |
This table is a wiki template with a default description in English. Editable here.
Shop
| Key | Value | Element | Rendering | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|---|
| shop | supermarket | | shop | bakery | | ||
| shop | butcher | | shop | kiosk | |
This table is a wiki template with a default description in English. Editable here.
Traffic
| Key | Value | Element | Rendering | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|---|
| amenity | fuel | | amenity | parking | |
This table is a wiki template with a default description in English. Editable here.
Eating
| Key | Value | Element | Rendering | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|---|
| amenity | fast_food | | amenity | pub | | ||
| amenity | restaurant | | amenity | biergarten | | ||
| amenity | cafe | |
This table is a wiki template with a default description in English. Editable here.
Enjoyment
| Key | Value | Element | Rendering | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|---|
| amenity | cinema | | amenity | theatre | | ||
| amenity | nightclub | |
This table is a wiki template with a default description in English. Editable here.
Education
| Key | Value | Element | Rendering | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|---|
| amenity | university | | amenity | school | | ||
| amenity | library | | amenity | college | |
This table is a wiki template with a default description in English. Editable here.
Public Transport
| Key | Value | Element | Rendering | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|---|
| highway | bus_stop | | railway | tram_stop | | ||
| railway | tram | | railway | subway_entrance | | ||
| railway | station | | amenity | bus_station | | ||
| amenity | taxi | |
This table is a wiki template with a default description in English. Editable here.
Post
| Key | Value | Element | Rendering | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|---|
| amenity | post_box | |
| amenity | post_office | |
This table is a wiki template with a default description in English. Editable here.
Accomodation
| Key | Value | Element | Rendering | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|---|
| tourism | hotel | | tourism | hostel | | ||
| tourism | motel | | tourism | guest_house | |
This table is a wiki template with a default description in English. Editable here.
Labels
Labels (POI) are displayed as 3D text objects. Labels are organized in the following layers:
- Suburb Labels
- Building Labels
- Building Numbers
- County Labels
- Locality Labels
- Village Labels
- Region Labels
- City Labels
- Nature Labels
- Street Labels
Suburb Labels
| Key | Value | Element | Rendering | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|---|
| place | suburb | | place | airport | |
This table is a wiki template with a default description in English. Editable here.
Building Labels
| Key | Value | logical operator | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|
| building | yes or true | AND | name | any | |
This table is a wiki template with a default description in English. Editable here.
Building Numbers
| Key | Value | logical operator | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|
| building | yes or true | AND | addr:housenumber | any | |
This table is a wiki template with a default description in English. Editable here.
County Labels
| Key | Value | Element | Rendering | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|---|
| place | county | |
This table is a wiki template with a default description in English. Editable here.
Locality Labels
| Key | Value | Element | Rendering | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|---|
| place | locality | |
This table is a wiki template with a default description in English. Editable here.
Village Labels
| Key | Value | Element | Rendering | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|---|
| place | village | | place | hamlet | |
This table is a wiki template with a default description in English. Editable here.
Region Labels
| Key | Value | Element | Rendering | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|---|
| place | region | |
This table is a wiki template with a default description in English. Editable here.
City Labels
| Key | Value | Element | Rendering | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|---|
| place | city | | place | town | |
This table is a wiki template with a default description in English. Editable here.
Nature Labels
| Key | Value | Element | Rendering | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|---|
| natural | peak | |
This table is a wiki template with a default description in English. Editable here.
Street Labels
Street Labels are created from the road network and displayed as separate layer. This layer is also tiled, i.e. labels are not provided as individual features, but as collection of features of a rectangular area. The font size depends on the tile level.
| Key | Value | Element | Font Size / Tile Level | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | |||
| highway | motorway | | 18 | 33.6 | 62.4 | 115.2 | 211.2 | 384 | 768 | 1536 | 3072 | |
| highway | trunk | | 12 | 24 | 48 | 96 | 192 | 384 | ||||
| highway | primary | | 12 | 24 | 48 | 96 | 192 | |||||
| highway | secondary | | 12 | 24 | 48 | 96 | ||||||
| highway | tertiary | | 12 | 24 | 48 | |||||||
| highway | residential | | 12 | 24 | ||||||||
| highway | living_street | | 12 | 24 | ||||||||
| highway | service | | 12 | 24 | ||||||||
| highway | pedestrian | | 12 | 24 | ||||||||
| highway | footway | | 12 | 24 | ||||||||
This table is a wiki template with a default description in English. Editable here.
Technical Facilities
Some man-made objects can be displayed as 3D symbol since they usually share a similar shape and color.
| Key | Value | Element | Rendering | Key | Value | Element | Rendering |
|---|---|---|---|---|---|---|---|
| man_made | lighthouse | | man_made | windmill | | ||
| power_source | windgenerator | |
This table is a wiki template with a default description in English. Editable here.
Map Functions
Displaying and navigating through the map is not the only purpose of the OSM-3D project. Access to feature information, finding places and routes, importing your own tracks, and other interactions with the map are equally important. Most of these functions have been realized by connecting to specialized geo-services with open OGC interfaces. Using OGC services has the advantage that components can be easily replaced, for instance a third party OGC service working on local, non-OSM data can be plugged in. These services are the actual building blocks of a spatial data infrastructure. However, usually geo services provide 2D data, e.g. a geocoder will provide most likely 2D coordinates. In order to be displayed together with the virtual landscape model, the height must be obtained from an additional source. For this purpose we set up an Elevation Query Service (EQS) which interpolates height values from the DEM. The EQS contains a PostGIS database with triangulated SRTM data.
The following plugins are available in the XNavigator Webstart edition. Some must be enabled in the Panels menu:
Get Feature Info
GetFeatureInfo is an operation of the W3DS. You can click on the map and will receive a list of attributes of the selected feature.
Geocoder
Geocoder is a common component in map applications. It allows to search for places and addresses. The Reverse Geocoder receives coordinates and looks up the address in the database. Click on a building and the address will pop up.
POI Search
Convenient function to search for POIs. All OSM POIs have been categorized, spatially indexed, and stored in a PostGIS data base. Access to this data base is enabled through an OGC Directory Service. The POI search panel ("Yellow Pages") offers a list of all available categories and sub types. Click on the map, specify a search radius, select either a category or a single feature type, and you will see all nearby POIs that match your query.
3D Routing
Routing allows to find shortest or fastest connections between two points. The 3D route service (3DRS) is a special modification of the service used in OpenRouteService. It supports several modi: fastest route for cars, shortest route for cars, routes for pedestrians, and routes for bicycles. All these modes can be used in OSM-3D. The 3DRS delivers, in contrast to the normal RS, 3D line strings in the route description, which can be easier imported and displayed together with the DEM. You can either pick two arbitrary points, or specify addresses for the start and end point.
GPX Import
If you have recorded your own GPS tracks, you can upload the GPX file and display the track in OSM-3D.
Access to Sensor Data
Sensor data can be obtained from an OGC Sensor Observation Service (SOS). The display of sensor data includes a 3D symbol representing the sensor category and a list of values which were recently recorded by the sensor. The SOS contains environmental sensor data collected from another source.
OSM-3D Client Software
The web client that is used in OSM-3D is called XNavigator. It has been mainly developed as client for the W3DS reference implementation, but it also allows access to a couple of complementary OGC services. Hence it is sometimes also referred to as "integrated client", but in the OSM-3D project its main purpose is to fly through the city and landscape models without the need to install or configure anything.
XNavigator can be used in 3 ways:
- as Applet embedded in a webpage. This is the simplest version. Selection and configuration of layers is fixed and cannot be changed. Permalinks can be created and distributed. The Applet provides an External Authoring Interface (EAI) giving a limited access to internal functions. See OSM-3D Applet page for details.
- as Java Webstart. This gives you a complete GUI and full access to layers, settings, and map functionalities, including routing, geocoding, sensor data access and others. As additional navigation mode a 2D overview map can be used.
- as installation. Same as Webstart, but without restrictions. Webstart is running in a sandbox environment with limited access to system resources. With the installation you can also import models from your local hard drive. The installation is sometimes faster than Webstart.
XNavigator homepage: http://koenigstuhl.geog.uni-heidelberg.de/xnaviwiki
Data Updates
Some Interesting Places
City of Rostock
The first complete city model in OSM-3D was made available for the City of Rostock. In April 2009, The Land Surveilling Office (Kataster-, Vermessungs- und Liegenschaftsamt - KVL) of Rostock donated all their building data to OSM. The building footprints have been slightly simplified and have an accuracy of <= 1m, which is sufficient for an LOD-1 (see CityGML) city model. On request of the University of Bonn, they also provided building height information which could be imported in August 2009. For more information on the data import see Rostocker Gebäudehöhen Import 2009.
Servers
OSM-3D is running on several servers installed in the Computing Center of the University of Heidelberg (URZ).
| Server | Function | Configuration | System |
|---|---|---|---|
| rax | Application and database server
Proxy for internal services | CPU: 2 x Intel Xeon X5355 @ 2,66GHz
HDD: 2 x 250GB SATA 7,2k in RAID 1 RAM: 16 GB | Windows Server 2003 Enterprise x64 Edition
PostGreSQL 8.3 Java SE 6 Apache 2.2 HTTP Server Several Apache Tomcat Servlet Containers |
| brocken | Data processing server
Used for updates | CPU: 2 x Intel Xeon X5570 @ 2,93GHz, Hyperthreading on
HDD: 2 x 500GB SATA in RAID 0 RAM: 35 GB | Debian Squeeze
PostGreSQL 8.4 Java SE 7 |
| zimba | Database server | CPU: Intel Core 2 Quad Q6700 @ 2,66GHz
HDD: 4 x 2TB SATA 5,4k. 3 of them in S/W RAID 0 RAM: 4 GB | Debian Squeeze
PostGreSQL 8.4 |
This table is a wiki template with a default description in English. Editable here.
Statistics
2009.06.22: Buildings update (561.099) 2009.05.29: Buildings update (329.162) 2009.05.09: Buildings update (291.813) 2009.05.06: Buildings update (281.913) 2009.04.27: Buildings update (266.170) 2009.04.19: Buildings update (256.839) 2009.04.17: Buildings update (255.993) 2009.04.16: Buildings update (254.590) 2009.04.08: Buildings update (246.553)
As of 07/20/2010:
Buildings: 2.378.301 Point Objects: 5.659.070 W3DS Database Size: 99 GB Processing Database Size: 306 GB

