OpenStreetMap buildings: Difference between revisions

From FlightGear wiki
Jump to navigation Jump to search
(Add clean option.)
Line 1: Line 1:
{{WIP}}
[[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 gamble roofs.]]
Line 19: Line 17:
# Choose a manual area and drag a box around your building.
# Choose a manual area and drag a box around your building.
# Click your building, the way id will be shown. Copy this id.
# Click your building, the way id will be shown. Copy this id.
# Run the following code, replacing 44338398 with your building's id:
# Run the following code, replacing <tt>44338398</tt> with your building's id:
:: <code>perl bob.pl -w 44338398</code>
:: <code>perl bob.pl -w 44338398</code>


Line 32: Line 30:
::* '''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:
:::: <code>-clean</code>


=== All buildings in an area ===
=== All buildings in an area ===
Line 37: Line 37:
# 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.
# 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.
#: <code><nowiki>http://overpass-api.de/api/xapi?way[bbox=left,bottom,right,top][building=*][@meta]</nowiki></code>
#: <code><nowiki>http://overpass-api.de/api/xapi?way[bbox=left,bottom,right,top][building=*][@meta]</nowiki></code>
#: For example:
#: <code><nowiki>http://overpass-api.de/api/xapi?way[bbox=-74.02037,40.69704,-73.96922,40.73971][building=*][@meta]</nowiki></code>
#: <code><nowiki>http://overpass-api.de/api/xapi?way[bbox=-74.02037,40.69704,-73.96922,40.73971][building=*][@meta]</nowiki></code>
# Get a list of wayids via <code>grep "<way" map.osm|cut -f2 -d\">file.txt</code>
# Get a list of wayids via <code>grep "<way" map.osm|cut -f2 -d\">file.txt</code>

Revision as of 18:35, 4 May 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.

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