OpenStreetMap buildings
Jump to navigation
Jump to search
Buildings can be mapped in OpenStreetMap. Their shapes can be turned into 3D models for use in FlightGear scenery.
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).Cite error: Invalid
<ref>
tag; invalid names, e.g. too many - There are "just" 64 million buildings in OSM, most cities in the world have no buildings at all or just a few.
- 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
- Find the building in OpenStreetMap.
- Enable the "Data" overlay.
- Choose a manual area and drag a box around your building.
- Click your building, the way id will be shown. Copy this id.
- 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
- Next to this basic code, there are several options, to be added behind the basic code.
All buildings in an area
- 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]
- Get a list of wayids via
grep "<way" map.osm|cut -f2 -d\">file.txt
- Run
perl bob.pl -w $object -f map.osm
on all the ids.
From another source
- Run ogr2ogr with:
ogr2ogr -t_srs WGS84 -s_srs "ESRI::in_shp.prj" "out_shp.shp" "in_shp.shp"
- Run shp2osm with:
perl shp2osm.pl "out_shp.shp" > "map.osm"
- Get a list of wayids via
grep "<way" map.osm|cut -f2 -d\">file.txt
- Run
perl bob.pl -w $object -f map.osm
on all the ids.
External links
- Building attributes (OSM wiki)
- Roof type Library (OSM wiki)