OpenStreetMap buildings: Difference between revisions

From FlightGear wiki
Jump to navigation Jump to search
m (Use cite template)
mNo edit summary
Line 1: Line 1:
[[File:Gatewing X100 TU Delft 2.png|thumb|270px|OSM generated buildings and roads.]]
[[File:Gatewing X100 TU Delft 2.png|thumb|270px|OSM generated buildings and roads.]]
[[File:Delft OpenStreetMap buildings with roof textures.png|thumb|270px|Houses with gamble roofs.]]
[[File:Delft OpenStreetMap buildings with roof textures.png|thumb|270px|Houses with gable roofs.]]
Buildings can be mapped in [[OpenStreetMap]]. Their shapes can be turned into 3D models for use in [[FlightGear]] scenery.
Buildings can be mapped in [[OpenStreetMap]]. Their shapes can be turned into 3D models for use in [[FlightGear]] scenery.


Line 35: Line 35:
::* '''Create a xml file''' with a standard range animation:
::* '''Create a xml file''' with a standard range animation:
:::: <code>-x</code>
:::: <code>-x</code>
::* '''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 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 gable roof:
:::: <code>-clean</code>
:::: <code>-clean</code>



Revision as of 16:07, 26 November 2012

OSM generated buildings and roads.
Houses with gable 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 gable 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.