OpenStreetMap buildings: Difference between revisions

From FlightGear wiki
Jump to navigation Jump to search
m (Use cite template)
Line 4: Line 4:


== Challenges ==
== Challenges ==
* Only 1.04 % of the over 64 million buildings in OSM have a height specified. Ca. 1.4 % has a known number of floors (levels).<ref>[http://taginfo.openstreetmap.org/keys/?key=building#combinations "building | Keys | OpenStreetMap Taginfo"]</ref>
* There are "just" 64 million buildings in OSM<ref>{{cite web |url=http://wiki.openstreetmap.org/wiki/Key:building |title=Key:building |work=OpenStreetMap Wiki |accessdate=15 September 2012 }}</ref>, most cities in the world have no buildings at all or just a few.
* There are "just" 64 million buildings in OSM<ref>[http://wiki.openstreetmap.org/wiki/Key:building "Key:building - OpenStreetMap Wiki"]</ref>, most cities in the world have no buildings at all or just a few.
* Only 1.04% of the buildings in OSM have a height specified. Ca. 1.4% has a known number of floors (levels).<ref>{{cite web |url=http://taginfo.openstreetmap.org/keys/?key=building#combinations |title=<nowiki>building | Keys | OpenStreetMap Taginfo</nowiki> |accessdate=15 September 2012 }}</ref>
* FlightGear cannot handle thousands of models in a view. Grouping models into bigger files might give a performance improvement, but is less practical.
* FlightGear cannot handle thousands of models in a view. Grouping models into bigger files might give a performance improvement, but is less practical.


Line 59: Line 59:
* [http://wiki.openstreetmap.org/wiki/Roof_type_Library Roof type Library] (OSM wiki)
* [http://wiki.openstreetmap.org/wiki/Roof_type_Library Roof type Library] (OSM wiki)


<references/>
{{Appendix}}


[[Category:Scenery enhancement]]
[[Category:Scenery enhancement]]

Revision as of 15:18, 16 September 2012

OSM generated buildings and roads.
Houses with gamble roofs.

Buildings can be mapped in OpenStreetMap. Their shapes can be turned into 3D models for use in FlightGear scenery.

Challenges

  • There are "just" 64 million buildings in OSM[1], most cities in the world have no buildings at all or just a few.
  • Only 1.04% of the buildings in OSM have a height specified. Ca. 1.4% has a known number of floors (levels).[2]
  • FlightGear cannot handle thousands of models in a view. Grouping models into bigger files might give a performance improvement, but is less practical.

Tools

A perl script is being written to turn the OSM data into 3D models. It is available at https://gitorious.org/fgscenery/tools.

Note for Windows

  • Windows does not contain perl by default. You're advised to install Strawberry Perl for Windows. It is a simple installer; no need to dig into your system.
  • Cygwin is also advised, so "grep" can be used to get a list of building ids easily.
  • When working with shapefiles not coming from OSM you will need ogr2ogr, which is included in FWTools.

From OpenStreetMap

A single building

  1. Find the building in OpenStreetMap.
  2. Enable the "Data" overlay.
  3. Choose a manual area and drag a box around your building.
  4. Click your building, the way id will be shown. Copy this id.
  5. Run the following code, replacing 44338398 with your building's id:
perl bob.pl -w 44338398
Next to this basic code, there are several options, to be added behind the basic code.
  • Lat/lon location of the model's origin:
-lat 52.00141 -lon 4.36966
  • Object name (not the .ac name!):
-n "Empire State Building"
  • Building height (in meters):
-h 15
Note: buildings are always sunk 5 m into the ground, in order to account for non-flat terrain. These 5 meters are added on top of (or below, if you like) the building height.
  • Create a xml file with a standard range animation:
-x
  • Clean the shape by removing nodes that lie within a certain distance from the line that connects its two adjacent nodes. This results in much smaller files and allows more buildings to have a gamble roof:
-clean

All buildings in an area

Lower Manhattan at dawn.
  1. Download a file with all data from the area, by visiting the following link and save it somewhere on your computer. This will only include buildings (building=yes) within the specified bounding box.
    http://overpass-api.de/api/xapi?way[bbox=left,bottom,right,top][building=*][@meta]
    For example:
    http://overpass-api.de/api/xapi?way[bbox=-74.02037,40.69704,-73.96922,40.73971][building=*][@meta]
  2. Get a list of wayids via grep "<way" map.osm|cut -f2 -d\">file.txt
  3. Run perl bob.pl -w $object -f map.osm on all the ids.

From another source

  1. Run ogr2ogr with:
    ogr2ogr -t_srs WGS84 -s_srs "ESRI::in_shp.prj" "out_shp.shp" "in_shp.shp"
  2. Run shp2osm with:
    perl shp2osm.pl "out_shp.shp" > "map.osm"
  3. Get a list of wayids via grep "<way" map.osm|cut -f2 -d\">file.txt
  4. Run perl bob.pl -w $object -f map.osm on all the ids.

External links

References
  1. "OpenStreetMap Wiki". Retrieved 15 September 2012.
  2. building | Keys | OpenStreetMap Taginfo. Retrieved 15 September 2012.